Java 处理GWT RequestFactory服务器错误响应
我有一个新编码的GWT/GAE应用程序,在客户端使用RequestFactory和编辑器,在后端使用定制的Objectify DAO服务 flush()然后persist()路径在成功时可以正常工作。 客户端JSR303也可以正常工作 我的问题是如何触发服务器警告/错误并处理UI更新 我正在使用Chandler的通用DAO进行Objectify 2 我的gwt活动正在调用persist(myProxy).fire(新接收器) 我的dao代码正在抛出IllegalArgumentException和其他业务逻辑情况下的运行时异常,如“找到重复的电子邮件地址-要改为登录吗?” onSuccess()可以很好地跟踪成功的结果。 Receiver.onFailure()和Receiver.onViolation()都不报告运行时异常 (更正:正在为服务器端异常调用onFailure()) 有更好的方法吗? DAO应该抛出哪些异常,以便onViolation()或onFailure()报告错误?Java 处理GWT RequestFactory服务器错误响应,java,google-app-engine,gwt,dao,Java,Google App Engine,Gwt,Dao,我有一个新编码的GWT/GAE应用程序,在客户端使用RequestFactory和编辑器,在后端使用定制的Objectify DAO服务 flush()然后persist()路径在成功时可以正常工作。 客户端JSR303也可以正常工作 我的问题是如何触发服务器警告/错误并处理UI更新 我正在使用Chandler的通用DAO进行Objectify 2 我的gwt活动正在调用persist(myProxy).fire(新接收器) 我的dao代码正在抛出IllegalArgumentExceptio
编辑器应该如何处理异常并从异常中恢复?我发现最通用的命令序列是
void start() {
// Either get p
context1.get(..).to( new Receiver<P> { onSuccess(P resp){p = resp;} ... }).fire();
// OR create p
p = context2.create( P.class );
// Then save p
req = context2.persist(p).to( new Receiver<P>{ /* note do not use context1 */
onViolation(...) { /*JSR 303 handler*/ };
onFailure( error ) { /* handle */ error.getMessage() };
onSuccess(X x) { /* whatever persist() returns handler */ }; } );
// drive editor with p
driver.edit( p, req);
}
....
void onSave() {
// editor
ctxt = driver.flush() /* note ctxt == context2 */
if ( driver.hasErrors() ) { /*JSR 303 handler*/};
// RF
ctxt.fire();
}
void start(){
//要么得到p
context1.get(..).to(新接收器{onSuccess(P resp){P=resp;}…}).fire();
//或者创建p
p=context2.create(p.class);
//然后保存p
req=context2.persist(p).to(新接收器){/*注意不要使用context1*/
onViolation(…){/*JSR303处理程序*/};
onFailure(error){/*handle*/error.getMessage()};
onSuccess(X X){/*which persist()返回处理程序*/};});
//带p的驱动器编辑器
驱动程序编辑(p,req);
}
....
void onSave(){
//编辑
ctxt=driver.flush()/*注意ctxt==context2*/
if(driver.hasrerrors()){/*JSR 303 handler*/};
//射频
ctxt.fire();
}
根据下面的对话摘录
托马斯·布罗耶
onFailure应包含
您在服务器上引发的异常
一边
您可以通过提供自己的
异常处理程序到
RequestFactoryServlet(扩展它并
使用其构造函数获取
例外处理程序)
只有在以下情况下才会调用onViolation
您的实体没有通过JSR-303bean
验证,在验证之前进行检查
调用任何服务方法
如果你想
“捕获”clidnt代码中的故障,
您必须为该设备添加一个接收器
persist()服务方法:context.persist(p).to(新接收者