Я успешно загружаю сообщения для ограничений проверки из моего файла (ов) свойств (i18n), но когда я пишу проверку на стороне клиента, становится ясно, что один источник как для сообщений, так и для значений ограничений может сделать весь процесс менее громоздким.
Вкратце: есть ли способ загрузить значение, например 20, для аннотации размера из файла свойств?
@Size(max=20)
private String password;
Я пробовал строки типа:
@Size(max="${constraint.value}")
// or
@Size(max=Integer.valueOf("#{constraint.value}"))
Но значение должно быть целым числом и константой.
Edit1: логика проверки на стороне клиента c выполняется заново в виде отдельной библиотеки, просто торчат такие значения, как (5,10) для (min, max). (Используя тимилиф)
<script type="text/javascript" xmlns:th="http://www.thymeleaf.org" th:inline="javascript">
//...
// reading message from properties file
/*<![CDATA[*/
var errMessage = /*[[#{Size.user.userName}]]*/ 'default';
/*]]>*/
// adding a constraint to validationObj linked with one <input> element
validationObj.addSizeConstraint(ft.keyup,5,10,errMessage);
//...
</script>
Edit2: Благодаря комментарию @Pavel Horal я сделал так:
На стороне сервера:
public static final int USERNAME_MAX_SIZE=20;
@Size(max=USERNAME_MAX_SIZE)
private String userName;
На на стороне клиента (или на стороне клиента, так как он предварительно обрабатывается на стороне сервера с помощью thymeleaf), я получаю это значение следующим образом:
<script type="text/javascript" xmlns:th="http://www.thymeleaf.org" th:inline="javascript">
//...
/*<![CDATA[*/
var value =/*[[${T(com.project.FormModel).USERNAME_MAX_SIZE}]]*/ 20;
/*]]>*/
//...
</script>
Что, на мой взгляд, является лучшим решением, поскольку я сохраняю все значения за пределами javascript кода. Спасибо!