我有一个新编写的 GWT/GAE 应用程序,客户端使用 RequestFactory 和 Editors,在后端使用自定义的 Objectify DAO Service。
成功时,flush() 和 persist() 路径都可以正常工作。客户端 JSR 303 也能如预期地工作。
我的问题是如何触发服务器警告/错误并处理 UI 更新?
我正在使用 Chandler 的 Objectify 2 通用 DAO,在 http://turbomanage.wordpress.com/2010/02/09/generic-dao-for-objectify-2/ 中可找到。
我的 GWT 活动通过调用 persist(myProxy).fire(new Receiver<>) 来持久化对象。
我的 DAO 代码在业务逻辑情况下(例如:“找到重复的电子邮件地址 - 是否要登录?”)抛出 IllegalArgumentException 和其他 RuntimeExceptions。
Receiver<>.onSuccess() 可以很好地跟踪成功的结果。但是 Receiver<>.onFailure() 和 Receiver<>.onViolation() 都不能报告 RuntimeExceptions。
(更正:onFailure() 会应对服务器端异常)
是否有更好的方法来处理这个问题? 在什么情况下,DAO 应该抛出异常,以便 onViolation() 或 onFailure() 报告错误? 编辑器应该如何处理和从异常中恢复?