【发布时间】:2012-04-03 17:49:20
【问题描述】:
我正在使用 Spring 3.1.0.RELEASE、JSF 2.x、JPA 2 和 Hibernate Provider 做一个 Web 应用程序。该应用程序在 Tomcat 6.X 上运行。
网络应用可以用不同的语言显示:en、es、fr。
我在我的实体中使用 bean 验证。 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 不会?
谢谢。
【问题讨论】:
标签: jsf-2 bean-validation hibernate-validator