Ситуация: я хотел бы выполнить проверку Hibernate на основе свойств пользователя (чтобы разрешить различные правила проверки для ввода на основе данных учетной записи пользователя) - я думаю, что должна быть возможность использовать файл .properties для указания конкретное регулярное выражение, но я не могу понять, что не так:
Мой текущий метод указания регулярного выражения проверки извлекает это регулярное выражение из константы в конкретном файле интерфейса (чтобы все было вместе) и вставляет его как константу в аннотацию @Pattern()
для каждой переменной - например. для переменной workPhone
:
@Column(name = "WORK_PHONE")
@NotEmpty(message = "{ContactInfo.workPhone.notEmpty}")
@Pattern(regexp = PHONE_NUMBER_PATTERN_SL, message = "{ContactInfo.workPhone.regexp.msg}")
@Size(max = 10, message = "{ContactInfo.workPhone.size}")
protected String workPhone;
... где регулярное выражение хранится в static final String
PHONE_NUMBER_PATTERN_SL
, а все вызовы {ContactInfo.workPhone...}
поступают из файла .properties:
ContactInfo.workPhone.notEmpty=Please enter your phone number.
ContactInfo.workPhone.regexp.msg=Invalid characters entered in phone. Use this format XXX-XXX-XXXX.
ContactInfo.workPhone.size=Phone can not be longer than 10 digits.
К сожалению, такая компоновка делает шаблон проверки общеприложения (скомпилированным), так как я не могу найти способ изменить его для другого пользователя в другой компании, месте, должности и т. д. Чтобы можно было различать на основе эту информацию, я также хотел бы сохранить регулярное выражение в файле свойств, и я пытаюсь включить его следующим образом:
ContactInfo.workPhone.regexp=\d{3}-\d{3}-\d{4}
при включении ссылки в аннотацию из третьей строки в первом листинге кода:
@Pattern(regexp = "{ContactInfo.workPhone.regexp}", message = "{ContactInfo.workPhone.regexp.msg}")
Затем я бы отключил файлы свойств для разных случаев, например, чтобы разрешить/требовать формат телефонного номера за пределами США.
Вопрос. Можно ли делать то, что я хочу? Есть ли лучший способ указать шаблон (который может разрешить даже вызов базы данных вместо файла свойств)?
Кроме того, я не лучший в этом (поскольку я замещаю другого разработчика), поэтому, если бы кто-то мог просто указать мне на сфокусированный ресурс, касающийся использования аннотации @Pattern или другой разметки проверки регулярных выражений Hibernate, то это может дать мне всю необходимую информацию.
TL;DR: можно ли использовать динамически устанавливаемое или измененное значение для выражения, используемого при проверке шаблона Hibernate, вместо предопределенной и предварительно скомпилированной константы?