2011-01-26 16 views

Respuesta

40

El JSR 303 default message interpolation algorithm le permite personalizar mensajes mediante el suministro de un paquete de recursos llamado ValidationMessages. Crear un archivo ValidationMessages.properties en la ruta de clase que contiene:

javax.validation.constraints.NotNull.message=CUSTOM NOT NULL MESSAGE 
javax.validation.constraints.Size.message=CUSTOM SIZE MESSAGE 

Esto cambia el mensaje predeterminado para la restricción @Size, por lo que debe utilizar la restricción @Size en lugar de la limitación @Length Hibernate-específica.

En lugar de cambiar el mensaje predeterminado para todas las restricciones, puede cambiar el mensaje para una instancia de restricción específica. Establecer el atributo message en la restricción:

@NotNull(message = "{email.notnull}") 
private String email; 

Y añadir el mensaje en el archivo ValidationMessages.properties:

email.notnull=E-mail address is required 
+8

Creo que una valiosa barra lateral para agregar aquí es que puedes obtener los valores mínimo y máximo del tamaño como 'javax.validation.constraints.Size.message = La longitud debe estar entre {min} y {max} caracteres ' – Patrick

+3

cómo hacerlo ¿Hago internacionalización con este archivo de propiedades? ValidationMessages_ .properties? –

+0

@Chin Huang, ¿Qué pasa si los valores de {min/max] pueden cambiar dinámicamente? ¿Se puede especificar como parámetro de mensaje {El valor mínimo es {provided_at_runtime}}, donde provided_at_runtime no hace referencia a un atributo de anotación –

0

En Spring supongo que te refieres a Spring MVC.

Desde el siguiente referencia http://static.springsource.org/spring/docs/2.0.x/reference/mvc.html

Aquí tiene -

se crea una clase de validador -

public class UserValidator implements Validator { 

    public boolean supports(Class candidate) { 
     return User.class.isAssignableFrom(candidate); 
    } 

    public void validate(Object obj, Errors errors) { 
     ValidationUtils.rejectIfEmptyOrWhitespace(errors, "firstName", "required", "Field is required."); 
     ValidationUtils.rejectIfEmptyOrWhitespace(errors, "lastName", "required", "Field is required."); 
    } 
} 

poner en cualquier texto de validación que desee en el campo de arriba.

En el JSP necesita lo siguiente etiqueta -

<tr> 
    <td>First Name:</td> 
    <td><form:input path="firstName" /></td> 
    <!-- Show errors for firstName field --> 
    <td><form:errors path="firstName" /></td> 
</tr> 

De esta manera será impreso cualquier error de validación para firstName.

+0

estoy usando anotación de validación como @NotNull. Entonces, ¿dónde se almacena el mensaje en Spring jar? Creo que necesito editarlos –

+0

@ apache-fan Yo abajo vote su respuesta porque OP dice acerca de la validación moderna del estilo JSR303 y no sobre el viejo resorte específico. –

Cuestiones relacionadas