这里是GWT新手,我正在尝试理解GWT在使用RPC时的哲学。因此,假设我有onModuleLoad(),并且有一个登录页面(用户名和密码)。因此,当用户单击submit时,它调用new ClickHandler()并说我需要执行以下操作:
问题:
AsyncCallback上面的每一项写东西吗?AsyncCallback和onFailure和onSuccess的操作吗?不是太多的编码(与struts相比吗?)因此,目前我的代码看起来是这样的,它在onSuccess中嵌套了2个onSuccess,这是一个很大的问题,因为在屏幕上放置一条供最终使用的消息之后,SessionService的执行就会出现。
MongoDBServiceAsync mongoDBServiceAsync = GWT.create(MongoDBService.class);
ServiceDefTarget serviceDef = (ServiceDefTarget) mongoDBServiceAsync;
serviceDef.setServiceEntryPoint(GWT.getModuleBaseURL()+ "dbservice");
try{
mongoDBServiceAsync.isValidUser(user, new AsyncCallback<User>(){
@Override
public void onFailure(Throwable caught)
{
//show error to user
}
@Override
public void onSuccess(User userDB)
{
SessionService.Util.getInstance().addUserToSession(userDB, new AsyncCallback<Void>(){ //yet another AsyncCallback
@Override
public void onFailure(Throwable caught)
{
//something went wrong
}
@Override
public void onSuccess(Void result)
{
//add user to session
// problem - this can be executed AFTER I wrote on screen: Hello USER_NAME
}});
}
});发布于 2015-08-27 13:24:37
asynccallback对于每个GWT调用都是必需的,也就是说,我们能够根据服务器来管理用户的操作。
面对实际的问题,您需要有多个RPC嵌套。只需修改您的isValidUser服务器端实现,这样它也可以将用户添加到会话中。
User isValidUser(User user) {
//validate user with DB
//if valid, add to session
return user
}https://stackoverflow.com/questions/32250545
复制相似问题