O SpringMVC suporta a verificação de dados é o padrão JSR303 e é verificado digitando @NotNull, @Max, etc. nas propriedades do feijão. O JSR303 fornece muitas interfaces de anotação, e o SpringMVC usa o Hibernate para essas verificações, por isso precisamos adicionar um pacote de validador para Hibernate:
Confiando em citações
Compile 'javax.validação: validação-api: 2.0.0.Final' compile 'org.hibernate: hibernate-validador: 6.0.0.Final'
A estrutura forneceu verificação da seguinte maneira:
Verifique as anotações fornecidas pela JSR:
@NULL O elemento anotado deve ser nulo
@NotNull O elemento anotado não deve ser nulo, não pode ser nulo, pode ser ""
@AssertTrue O elemento anotado deve ser verdadeiro
@Assertfalse O elemento anotado deve ser falso
@Min (valor) O elemento anotado deve ser um número e seu valor deve ser maior ou igual ao valor mínimo especificado.
@Max (valor) O elemento anotado deve ser um número e seu valor deve ser menor ou igual ao valor máximo especificado.
@Decimalmin (valor) O elemento anotado deve ser um número, e seu valor deve ser maior ou igual ao valor mínimo especificado
@Decimalmax (valor) O elemento anotado deve ser um número, e seu valor deve ser menor ou igual ao valor máximo especificado
@Size (max =, min =) Verifique se o comprimento do objeto (matriz, coleta, mapa, string) está dentro do intervalo especificado
@Digits (número inteiro, fração) O elemento anotado deve ser um número e seu valor deve estar dentro de um intervalo aceitável.
@Past O elemento anotado deve ser uma data passada
@Future O elemento anotado deve ser uma data futura
@Pattern (regex =, flag =) O elemento anotado deve cumprir com a expressão regular especificada
Verifique as anotações fornecidas pelo Validador de Hibernato:
@NotBlank (message =) só pode ser usado na string, não nula, e depois de chamar Trim (), o comprimento deve ser maior que 0
@Email O elemento anotado deve ser um endereço de e -mail
@Length (min =, max =) O tamanho da sequência anotada deve estar dentro do intervalo especificado.
@NotEmpty A sequência comentada deve estar não vazia, não pode ser nula "", pode ser ""
@Range (min =, max =, mensagem =) O elemento anotado deve estar dentro do intervalo apropriado
Exemplo de demonstração
Crie uma classe de entidade que precise ser verificada:
pacote com.yiba.wifi.news.bean.model; importar org.hibernate.validator.constraints.length; importar javax.validation.constransões. // nome de usuário @min (value = 1, message = "idade mínima tem 1 ano de idade") @max (valor = 120, message = "idade máxima é 120") idade inteira; // AGE @EMAIL (Mensagem = "Erro de formato de e -mail") @NotBlank (message = "Emailbox Format Error") String email; // email @length (min = 6, max = 12, message = "O comprimento da senha deve estar entre 6 e 12 dígitos") string pwd; // senha // get, defina .........}
Observe que, ao verificar o email, quando o email for "", ou nulo, ele passará a verificação do @EMAIL, portanto, a verificação do email exige @Email e @NotBlank para trabalharem juntos.
Design da interface do controlador, adicione a palavra -chave @Validated onde o parâmetro é aceito
/ *** Interface de login* @return*/ @PostMapping ("Login") public String Login (@Validated @RequestBody User) {return "OK"; }Testes de acesso:
Ao acessar os dados está no seguinte formato
{"Nome": "", "Age": 0, "Email": "", "PWD": ""}A resposta é:
{"Timestamp": 1524640724522, "Status": 400, "Error": "Bad Request", "Exception": "org.springframework.web.bind.methodargumentNotValidexception", "Errors": ["Codes": ["Notblank.erMail.erMail", "Errors": [{"Not": ["NotBlank.erMail.erMail "NotBlank.java.lang.string", "Notblank"], "Argumentos": [{"Codes": ["user.mail", "email"], "Argumentos": nulo, "defaultMessage", "email", "código": "email"}], "defaultMessage" "e -mail", "e -mail", "código", "email"}], "defaultMessage" "e -mail", "email", "código": "email"}], " "rejeição rejeitada": "", "bindingFailure": false, "code": "notblank"}, {"codes": ["Notblank.user.name", "Notblank.name", "Notblank.java.lang.string", "Notblank"], "Arguments": [{"codes" "" "" "" "," NOMENGRATE ":" Codes ":" Nome ":" "". null, "defaultMessage": "name", "code": "name" } ], "defaultMessage": "User name cannot be null, the length must be greater than 0", "objectName": "user", "field": "name", "rejectedValue": "", "bindingFailure": false, "code": "NotBlank" }, { "codes": [ "Length.user.pwd", "Length.pwd", "Length.java.lang.String", "Length" ], "arguments": [ { "codes": [ "user.pwd", "pwd" ], "arguments": null, "defaultMessage": "pwd", "code": "pwd" }, 12, 6 ], "defaultMessage": "password length must Esteja entre 6 e 12 bits "," ObjectName ":" User "," Field ":" PWD "," RejectedValue ":" "," BindingFailure ": False," Code ":" Length "}, {" Codes ": [" min.user.age "," min.age "," min.java.lang.iMger "(" Min.Age "," Min.Java.lang.Ingger "(Min.Age", "Min.Age", "Min.Java.lang.iMger" ("Min.Age", "min.Java.lang. "user.age", "age" ], "arguments": null, "defaultMessage": "age", "code": "age" }, 1 ], "defaultMessage": "minimum age is 1 year old", "objectName": "user", "field": "age", "rejectedValue": 0, "bindingFailure": false, "code": "Min" } ], "message": "Validation Falha para objeto = 'Usuário'.Você pode ver que a solicitação local não conseguiu verificar os 4 campos. Então, existe uma maneira de obter informações de exceção? A resposta é sim e precisamos modificar a interface do controlador.
/** * Interface de login * * @return */@PostMapping ("Login") public String Login (@Validated @RequestBody User, Usuário, BindingResult BindingResult) {if (bindingResult.haserrors ()) {// existe uma verificação que falha. para (erro de objecterror: errorList) {System.out.println (error.getDefaultMessage ()); // Mensagem de erro específica de saída} retornar "Exceção do parâmetro"; } retornar "OK"; }Solicitação novamente, o formato de solicitação é o seguinte
{"Nome": "", "Age": 0, "Email": "", "PWD": ""}A resposta é a seguinte
Exceção do parâmetro
As informações impressas no console são as seguintes:
O nome de usuário não pode ser nulo, o comprimento deve ser maior que 0
O comprimento da senha deve estar entre 6 e 12 dígitos, a idade mínima é de 1 ano de formato de e -mail de idade
Você pode ver que obtivemos as informações de verificação normalmente.
Vamos fazer um acesso correto de referência:
Os parâmetros de solicitação são os seguintes:
{"Nome": "Zhaoyanjun", "Age": 1, "Email": "[email protected]", "PWD": "123456"}A resposta é a seguinte:
OK
O console não gera nada.
Resumir
O exposto acima é um exemplo de demonstração da função de verificação de parâmetros de solicitação da mola introduzida pelo editor. Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!