Red de conocimiento informático - Conocimiento informático - Se corrigió si las asociaciones de validación recursivas se pueden usar para objetos heredados Validación de primavera

Se corrigió si las asociaciones de validación recursivas se pueden usar para objetos heredados Validación de primavera

Interfaz de verificación del validador

soportes booleanos(Classlt;? gt; clazz): Este validador puede validar objetos de tipo clazz

void validar(Objeto objetivo, Errores errores): Verifique el objeto de destino y registre los errores de verificación en errores

LocalValidatorFactoryBean

LocalValidatorFactoryBean implementa tanto la interfaz de validación de Spring como la interfaz de validación de JSR303

. Simplemente defina un LocalValidatorFactoryBean en el contenedor Spring e inyéctelo en el bean que necesita ser validado.

lt; bean id="validator"

class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/gt;

Validación de datos de Spring mvc

lt; mvc: gt basado en anotaciones estará equipado de forma predeterminada con un LocalValidatorFactoryBean, que permitirá a Spring MVC realizar la validación de datos marcando la anotación @Valid en el parámetro in del método de procesamiento.

público String handle91(@Valid @ModelAttribute("user")Useruser, BindingResult vinculanteResult){

if( bingResult.hasErrors){

return "/ user/register";

}

return "/user/showUser"

}

Agregar @Valid en el objeto entrante Anotar y luego declare un BindingResult entrante, y luego podrá determinar si hay un error según BindingResult. BindingResult puede ser un tipo BindingResult o un tipo Errors

Mostrar errores en la página

spring

mvc guardará el formulario en el BindingResult o Errors correspondiente. Ordene los resultados de la validación del objeto, pero también guarde todos los resultados de la validación en el modelo implícito. Todos los datos del modelo implícito finalmente quedarán expuestos al objeto de vista JSP a través de la lista de propiedades de

HttpServletRequest.

Mostrar mensajes de error a través de recursos internacionalizados

Cuando se producen errores en el enlace y la validación de datos, cada propiedad generará un objeto FieldError correspondiente y se implementa FieldError

org.springframework.context.MessageSourceObjeto resoluble. MessageSourceInterfaz resoluble.

MessageSourceResolvable es un objeto de resolución que se puede utilizar para recursos internacionalizados.

MessageSourceResolvable proporciona tres interfaces

Objeto getArguments(): devuelve un conjunto de objetos de parámetros

String[] getCodes(): devuelve un conjunto de códigos de mensaje, Cada código corresponde a un atributo de recurso. Puede utilizar getArguments() para devolver un conjunto de sustituciones de parámetros de atributos de recursos.

Cadena getDefaultMessage(): devuelve un conjunto de códigos de mensaje. Mensaje predeterminado

Cuando falla la verificación del atributo, el marco de verificación generará cuatro códigos de mensaje para el atributo. Estos códigos tienen el prefijo del nombre de clase de la anotación de verificación y se generan varios códigos de mensaje combinando el nombre de la clase. , nombre de atributo y nombre de tipo de atributo

Por ejemplo, el atributo de contraseña de la clase Usuario está anotado con @Pattern. Cuando la verificación falla, se generarán los siguientes cuatro códigos de error

. Parttern.user.password

Parttern.Parttern.java.lang.String

Parttern

Cuando se utiliza la etiqueta Spring mvc para mostrar un mensaje de error, Spring mvc comprobará si el contexto web ha ensamblado el mensaje internacionalizado correspondiente. En caso contrario, se mostrará el mensaje de error predeterminado; de lo contrario, se utilizará un mensaje internacionalizado para traducir el código de error.

Si se produce un error durante la conversión del tipo de datos o el formateo del tipo de datos, o un parámetro que debería estar presente no existe, o se produce un error durante la llamada al método del controlador, se crea una línea en el código implícito mensaje de error del modelo y utilice el siguiente prefijo de código de error:

Obligatorio: el parámetro requerido no existe, por ejemplo: @RequestParam(Cuando el parámetro de solicitud no existe, @RequestParam("param1") anotar un parámetro entrante

typeMismatch: se produjo una discrepancia en el tipo de datos durante el enlace de datos

methodInvocation: se produjo un error cuando Spring mvc llamó a un método

Ejemplo

Si pasa un argumento no numérico "aaa" al atributo de salario del Usuario, se producirá un error de conversión de datos y Spring generará el siguiente código de error para este error

typeMismatch user.salary

<.p>typeMismatch.p>

typeMismatch.salary

typeMismatch.long

typeMismatch

typMismatch

Recursos internacionalizados de Assembly

lt;bean id="messageSource"

class="org .springframework.context.support.ResourceBundleMessageSource"gt;

lt;propertyname ="basename"gt;

lt;valuegt;conf/i18n/messageslt;/valuegt;

lt;/propertygt;

lt;/beangt;

También puede usar el atributo basenames para especificar múltiples recursos internacionalizados

Agregue un nombre base para los recursos internacionalizados en conf/i18n.

En conf/i18n, uno por defecto es message.properties y el otro corresponde a message_zh_CN.properties. p>

Reglas de validación personalizadas

Ensamblar MyValidator personalizado

@InitBinder

public void initBinder (carpeta WebDataBinder){

binder.setValidtor(newxyxyxyxyxyxyxyxyxyxyxyx)setValidtor(newXXX()); //El validador se utilizará al realizar el enlace de datos

}

También puede utilizar el controlador de solicitudes La firma del método se pasa en un objeto Errors o BindingResult y luego se verifica directamente en el método del controlador. Nombre de usuario

//reserved.username

//reserved.java.lang.String

//reserved

}

if(bindingResult.hasErrors()){

return " /user/register4"

}else{

return "/user / showUser";

}

}

}

carpeta. El método setValidator() establece un Validador personalizado, que Spring mvc usará para verificar los parámetros entrantes, en lugar de usar el Validador ensamblado por el marco Spring mvc para verificar los objetos de parámetros entrantes, incluso si los parámetros entrantes están marcados con la anotación @Valid.