Ситуация : я хотел бы выполнить проверку гибернации на основе свойств пользователя (чтобы разрешить различные правила проверки для ввода на основе данных учетной записи пользователя) - я думаю, что должна быть возможность использовать файл .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, а не предопределенную и предварительно скомпилированную константу?