Я работаю в проекте с использованием JPA и Bean Validation.Я хочу показывать пользователю дружественные сообщения о неудачных проверках, и мне нужно показывать эти сообщения на разных языках в зависимости от языкового стандарта пользователей.
Я использую стандартные аннотации, такие как @NotNull
, @Size
, а также некоторые пользовательские проверки уровня класса.
Я использую следующий код для проверки сущностей перед их сохранением:
Validator validator = validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<Company>> constraintViolations = validator.validate(company);
if (constraintViolations.size() > 0) {
Set<String> violationMessages = new HashSet<String>();
for (ConstraintViolation<Company> constraintViolation : constraintViolations) {
violationMessages.add(constraintViolation.getPropertyPath() + ": " + constraintViolation.getMessage());
}
}
Если проверка не удалась, я вижу сообщения иполя, которые не прошли проверку, но я не знаю, как преобразовать эти сообщения проверки в дружественные и на разных языках (на основе Locale
пользователей).
У меня есть следующие вопросы:
- Как правильно достичь этого?
- Я знаю, что JPA автоматически проверяет сущности на предмет проверок перед сохранением.Если я выполняю проверку вручную (с помощью приведенного выше кода), выполняю ли я процесс проверки дважды?
- Если я использую JSF, которая также выполняет проверки перед обновлением модели, я запускаю процесс проверки три раза (1JSF, 2. приведенный выше код и 3. Wildfly / JPA перед сохранением / слиянием)?
- Если приведенный выше код выполняется в EJB, как я могу передать ошибки проверки на уровень представления (например, JSF))?
- Нужно ли возвращать список ConstraintViolations на уровень представления?- Нужно ли создавать исключение для каждой проверки?
Спасибо