Я делаю веб-приложение, используя Spring 3.1.0.RELEASE, JSF 2.x, JPA 2 с провайдером Hibernate.Приложение запускается на Tomcat 6.X.
Веб-приложение может отображаться на разных языках: en, es, fr.
Я использую проверку бинов в своих сущностях.Hibernate Validator является поставщиком, версия 4.2.0.Final.
У меня есть следующий код в сущности:
@Email
@Size(max=255)
@Column(name = "email_ceo", length = 255)
private String emailCeo;
@NotEmpty
@OrderBy("position ASC")
@OneToMany(cascade = ALL, mappedBy = "site", fetch = FetchType.EAGER)
private List<SiteLanguage> langs;
Я обработал исключение следующим образом:
try {
siteService.createSite(newSite);
} catch (ConstraintViolationException ex) {
final FacesContext facesContext = FacesContext.getCurrentInstance();
for (ConstraintViolation<?> cv : ex.getConstraintViolations()) {
facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, cv.getMessage(), null));
}
}
Я отображаю сообщение об ошибке в шаблоне, используя <h:messages />
Как получить переведенное сообщение, потому что cv.getMessage()
всегда возвращает английское сообщение?
Для электронной почты это работает нормально, у меня есть сообщение на хорошем языке.
Есть еще одна вещь, я не понимаю:
Почему @NotEmpty
выбрасываетConstraintViolationException и @Email
нет?
Спасибо.