2011-01-26 1 views

ответ

40

JSR 303 default message interpolation algorithm позволяет настраивать сообщения, поставляя пакет ресурсов с именем ValidationMessages. Создать ValidationMessages.properties файл в пути к классам:

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

Это изменяет сообщение по умолчанию для @Size ограничения, так что вы должны использовать @Size ограничение вместо Hibernate-специфического @Length ограничения.

Вместо изменения сообщения по умолчанию для всех ограничений вы можете изменить сообщение для конкретного экземпляра ограничения. Установите атрибут message на ограничение:

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

И добавьте сообщение в файл ValidationMessages.properties:

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

Я думаю, что достойная боковая панель для добавления здесь заключается в том, что вы можете получить минимальные и максимальные значения размера, такие как 'javax.validation.constraints.Size.message = Длина должна быть между {min} и {max} символами – Patrick

+3

, как это сделать Я делаю интернационализацию с этим файлом свойств? ValidationMessages_ .properties? –

+0

@Chin Huang, Что делать, если значения {min/max] могут изменяться динамически? Можно ли указать параметр сообщения {Минимальное значение {provided_at_runtime}}, где provided_at_runtime не ссылается на атрибут аннотации –

0

К весне я предполагаю, что вы имеете в виду Spring MVC.

Из приведенной ниже ссылке http://static.springsource.org/spring/docs/2.0.x/reference/mvc.html

Здесь вы идете -

Вы создать класс валидатора -

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."); 
    } 
} 

Поместить в любой текст публикации вы хотите в поле выше.

В JSP вам потребуется следующий тег -

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

Этот путь будет распечатана любая ошибка проверки для firstName.

+0

Я использую аннотации Validation как @NotNull. Итак, где хранится сообщение в Spring jar? Я думаю, мне нужно их отредактировать –

+0

@ apache-fan Я голосую за ваш ответ, потому что OP говорит о современной проверке стиля JSR303, а не о старой пружине. –