Jsf 2 Beans验证多语言消息失败
我正在使用Spring3.1.0.RELEASE、JSF2.x、JPA2和HibernateProvider开发一个Web应用程序。该应用程序在Tomcat6.X上运行 web应用程序可以用不同的语言显示:en、es、fr 我在实体中使用bean验证。Hibernate Validator是提供程序,版本为4.2.0.Final 我在实体中有以下代码:Jsf 2 Beans验证多语言消息失败,jsf-2,bean-validation,hibernate-validator,Jsf 2,Bean Validation,Hibernate Validator,我正在使用Spring3.1.0.RELEASE、JSF2.x、JPA2和HibernateProvider开发一个Web应用程序。该应用程序在Tomcat6.X上运行 web应用程序可以用不同的语言显示:en、es、fr 我在实体中使用bean验证。Hibernate Validator是提供程序,版本为4.2.0.Final 我在实体中有以下代码: @Email @Size(max=255) @Column(name = "email_ceo", length = 255)
@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;
@电子邮件
@尺寸(最大值=255)
@列(name=“email\u ceo”,长度=255)
私人首席执行官;
@空空如也
@订购人(“职位ASC”)
@OneToMany(cascade=ALL,mappedBy=“site”,fetch=FetchType.EAGER)
私人名单;
我这样处理异常:
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));
}
}
试试看{
创建站点(新闻站点);
}捕获(ConstraintViolationException ex){
最终FacesContext FacesContext=FacesContext.getCurrentInstance();
对于(ConstraintViolationCV:ex.getConstraintViolations()){
facesContext.addMessage(null,新FacesMessage(FacesMessage.SEVERITY_ERROR,cv.getMessage(),null));
}
}
我使用
如何获取翻译后的消息,因为cv.getMessage()
总是返回英文消息?
对于电子邮件,它工作良好,我有良好的语言信息
还有一件事,我不明白:
为什么@NotEmpty
抛出ConstraintViolationException而@Email
没有抛出?
谢谢你
Catch Exception e
捕获所有异常,然后查看抛出的类型。它将按顺序捕获它,并从catch子句继续。因此,抛出的第一个异常将退出try块@电子邮件不是Bean验证内置的约束,因此JSF2.0不会触发它。编写您自己的@Email约束(或包装Hibernate Validator提供的约束),以便Bean验证能够识别它。抱歉,我不确定您是否回答了我的问题。