次のコンポーネントを使用して、単純な 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 をスローします。キャッチで処理するため、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());
}
}
}
そしてまだ「警告: javax.ejb.EJBException」と長いトレースで満たされたグラスフィッシュのログ。いくつか質問があります:
- 私のセットアップはどのくらい正しいですか?jsf が BeanValidation を処理する必要があることは知っていますが、私の場合はそうではありません。
EJBException
サーバーログが汚染されないように警告を無効にする方法- EjbException を処理するより良い方法はありますか?