2015-12-24 2 views
1

Я использую весенний ботинок и тимеляф для веб-приложения.Весенняя загрузка + Пользовательские сообщения об ошибках Thymeleaf

Я хочу настроить сообщения об ошибках проверки, а не использовать значения по умолчанию. Я нашел способ сделать это, создав файл messages.properties с ограничениями и сообщением. Я также обнаружил, что могу создавать пользовательские сообщения на основе таргетинга класса, на котором я настроен, и на основе этого также могу использовать методы интернационализации.

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

Size.message=El tamño no es correcto 
NotNull.message=No puede ser nulo 
Min.message=No cumple con el minimo 

я установить ограничения в моем классе:

public class Person { 

    @Size(min=2, max=30) 
    private String name; 

    @NotNull 
    @Min(value = 18L) 
    private Integer age; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public Integer getAge() { 
     return age; 
    } 

    public void setAge(Integer age) { 
     this.age = age; 
    } 
} 

Это моя форма:

<form action="#" th:action="@{/form}" th:object="${person}" method="post"> 

    <table> 
     <tr> 
      <td>Name:</td> 
      <td><input type="text" th:field="*{name}"/></td> 
      <td th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Name error</td> 
     </tr> 
     <tr> 
      <td>Age:</td> 
      <td><input type="text" th:field="*{age}"/></td> 
      <td th:if="${#fields.hasErrors('age')}" th:errors="*{age}">Name error</td> 
     </tr> 
     <tr> 
      <td> 
       <button type="submit">Enviar</button> 
      </td> 
     </tr> 
    </table> 

</form> 

И я разместил messages.properties в папке ресурсов:

enter image description here

По этим ссылкам я делаю правильно:

Thymeleaf : How to use Custom Message Key in JSR-303 Annotation

How to include message.properties with thymeleaf

Но это еще не отображать пользовательские сообщения об ошибках, которые я написал.

Любое предложение? Заранее благодарим за помощь.

GitHub с кодом образца: https://[email protected]/MichaelKnight/ValidandoFormularios.git

+0

Можете ли вы сделать чистую сборку и проверку? Иногда изменения, внесенные в приложение загрузки весны, могут не отображаться до тех пор, пока приложение не будет очищено и не будет построено. – harshavmb

+0

@harshavmb Я просто сделал это. Ничего нового :( –

ответ

1

Наконец я получил его!

Вместо ClassName мне пришлось использовать имя объекта, и оно работает как шарм. NotNull.person.age=THE AGE CANNOT BE NULL!!!!

Я загрузил код в github для получения дополнительных справок для любого участника.

+0

Работает отлично, как это для меня, используя Spring Boot 1.4.1 –

3

Поскольку вы используете JSR-303 валидаторов, то вы должны поместить свои сообщения в файл с именем ValidationMessages.properties. Поставщик JSR-303 (в этом случае по умолчанию - hibernate-validator) выглядит по умолчанию для этого файла (согласно спецификации).

Смотрите подробности: https://docs.jboss.org/hibernate/validator/5.1/reference/en-US/html/chapter-message-interpolation.html

+0

Это тоже не сработало. –

+0

Работает ли это, если вы используете 'javax.validation.constraints.NotNull.message' вместо' NotNull.message' (в 'ValidationMessages.properties')? –

+0

Теперь мы Говорят, что это хорошо работает. Но это только частично решает мою проблему. Я действительно хочу назначить настраиваемые значения сообщениям об ошибках в зависимости от класса, как это объясняется здесь: http://stackoverflow.com/questions/20323655/thymeleaf-how-to-use-custom-message-key -in-jsr-303-annotation Если вам требуется специальное сообщение для разных полей, ваши свойства сообщения должны включать их в следующем формате: [constraintName.Class.field]. Например: NotEmpty.Vehicle.model = Модель не может быть пуста! –

0

Как @Slava предложил проблема заключается в использовании JSR-303 валидаторов.

Может быть, это поможет:

Thymeleaf : How to use Custom Message Key in JSR-303 Annotation

+0

эта ссылка также включена в описание моей проблемы. Я последовал за ним шаг за шагом без результата –

Смежные вопросы