我正在尝试使用以下组件开始使用简单的 java ee 应用程序:JSF 2.0、JPA EclipseLink、Glasshfish 3。
这是一些片段,支持bean:
@Inject
private ProductsFacade model;
public void saveRow(Products p) {
model.edit(p);
}
产品外观:
@Stateless
public class ProductsFacade extends AbstractFacade<Products> {
@PersistenceContext
private EntityManager em;
public void edit(Products entity) {
em.merge(entity);
}
....
Products 是一个带有 bean 验证注解的实体 bean。
现在,当用户错误填写表单时,'model.edit' 会抛出 EjbException,我用 catch 处理它,所以saveRow
支持 bean 方法现在看起来不那么简洁了:
public void saveRow(Products p) {
try {
model.edit(p);
} catch (EJBException e) {
if(e.getCause().getClass().getName().equals("javax.validation.ConstraintViolationException")) {
handleConstraintViolation((ConstraintViolationException)e.getCause());
}
}
}
并且仍然 glassfish 日志充满了“警告:javax.ejb.EJBException”和长痕迹。我有一些疑问:
- 我的设置有多正确?我知道 jsf 应该处理 BeanValidation,但在我的情况下它没有。
- 如何禁用
EJBException
警告,使服务器日志不会被污染 - 有没有更好的方法来处理 EjbException ?