【问题标题】:Hibernate Validator ExceptionsHibernate 验证器异常
【发布时间】:2009-11-12 18:35:00
【问题描述】:

我在带有 EJB 和 Spring MVC 的应用程序中使用 Hibernate Validator。我正在使用 JBoss 5、Hibernate 3 和 Spring MVC 版本 3。

我想尝试在 Spring Exception Resolver 级别捕获验证异常,并根据 InvalidStateException 消息生成错误消息。我不想把异常处理逻辑放在数据访问层;我希望它由注释驱动,并且只在一个集中的地方处理验证错误。

当我尝试创建无效实体(例如,违反字段的长度限制)时,域模型正在被正确验证,并按预期抛出了 InvalidStateException 类型的异常。在尝试在我的 Spring 异常解析器实例中捕获异常时,我发现我的原始异常已经消失并且 javax.ejb.EJBTransactionRolledbackException 已取而代之。原始异常不在引起列表中。

我的第一个猜测是org.hibernate.validator.InvalidStateException 没有用ApplicationException 注释,所以我安装了一个Hibernate 事件侦听器,捕获了原始异常并将其重新抛出为一个用ApplicationException 注释的新异常。这没有效果。

另一个复杂性是 Web 层通过远程接口调用 EJB。我用WebFault 注释了我的异常类,但无济于事。

我应该怎么做才能确保异常冒泡?

【问题讨论】:

    标签: java hibernate exception-handling ejb hibernate-validator


    【解决方案1】:

    试试这个?

    <pre></pre>

    受保护的 InvalidStateException extractValidationException(Throwable ex) { 可投掷的 e = ex; 而(e!= null){ if (e instanceof InvalidStateException) { 返回 (ValidationException) e; } else if (e instanceof EJBException) { e = ((EJBException) e).getCausedByException(); } 别的 { e = e.getCause(); } } 返回空值; }

    【讨论】:

    • 谢谢 - 我没有看到 EJBException 方法“getCausedByException”。我明天会看看这个,如果它有效,我会接受!
    猜你喜欢
    • 1970-01-01
    • 2014-07-27
    • 2014-02-20
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多