2013-12-02 1 views
2

Использование ThymeleafThymeleaf: Как использовать Custom Message Key в JSR-303 Аннотация

  • Person.java
 

    public class Person { 
     @NotEmpty(message="{Valid.Password}") 
     private String password; 
    } 

  • message.properties
 

    Valid.Password = Password is Empty!! 

  • login.html
 

    <span class="error" th:errors="person.password"></span> 

й: ошибки не может получить сообщение 'Valid.Password' Эта область показана как пустые.

если сообщение ключа изменяется на NotEmpty.person.password of message.properties, то он работает.

Как пользоваться пользовательским сообщением ключ?

+0

Попробуйте проверить в вашей JSR 303 библиотеки реализации, что его ключевое сообщение для @NotEmpty ограничения, вы можете изменить это в messages.properties – fjtorres

+0

@fjtorres, когда вы говорите, ключ сообщения, я думаю, вы означает значение, которое появляется в javadocs. Кстати, вы учились в Университете Альмерии (Испания)? Просто любопытно. –

ответ

4

Использование ограничений javax.validation в классе и добавление пользовательских сообщений требует от вас в основном переопределения сообщений по умолчанию. , например:

public class Vehicle implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Size(min=17, max=17, message="VIN number must have 17 characters") 
    private String vin; 


    @NotEmpty 
    @Pattern(regexp="[a-z]*", flags = Pattern.Flag.CASE_INSENSITIVE) 
    private String make; 

    @NotEmpty 
    @Pattern(regexp="[a-z]*", flags = Pattern.Flag.CASE_INSENSITIVE) 
    private String model; 

Чтобы переопределить значения по умолчанию, вы вставляете пользовательское сообщение в проверке себя как для VIN, или добавить их в файл messages.properties:

# Validation messages 
notEmpty.message = The value may not be empty! 
notNull.message = The value cannot be null! 

Таким образом, вы главенствующие значения по умолчанию для:

javax.validation.constraints.NotEmpty.message 
javax.validation.constraints.NotNull.message 

Если требуется специальное сообщение для разных полей, ваши свойства сообщения должны включать их в следующем формате: [CONSTR aintName.Class.field]. Например:

NotEmpty.Vehicle.model = Model cannot be empty! 

Если не включать значения переопределения, как один выше, он будет отображаться значение по умолчанию, или общее переопределение как notEmpty сообщение.

Конечно, есть другие способы отображения сообщений проверки, например, использование информации, необходимой вам из объекта ConstraintViolation, который выходит из экземпляра Validator.

Надеется, что это помогает,

+0

Я безуспешно следил за вашим методом. Я создал файл messages.properties с указанным форматом: [constraintName.Class.field], а также для общих случаев notEmpty.message = .... но он был проигнорирован. Единственный способ переопределить найденные сообщения проверки - это создать файл ValidationMessages.properites, но он по-прежнему не позволяет делать его по отдельности классами. Интересно, был ли вы образец, который вы разместили ранее в github или аналогичный, чтобы проверить его. –

+0

NotEmpty.partAttribute.tittle = Часть элемента не может быть пуста !!! – Blejzer

+0

Попробуйте поместить атрибут, который вы передадите в представление вместо класса в формате: [constraintName.Attribute.поле], заменив [constraintName.Class.field]. – Blejzer