首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AsyncCallback的使用;代码管理

AsyncCallback的使用;代码管理
EN

Stack Overflow用户
提问于 2015-08-27 13:20:44
回答 1查看 943关注 0票数 1

这里是GWT新手,我正在尝试理解GWT在使用RPC时的哲学。因此,假设我有onModuleLoad(),并且有一个登录页面(用户名和密码)。因此,当用户单击submit时,它调用new ClickHandler()并说我需要执行以下操作:

  1. 验证用户身份(-用户名是有效的)
  2. 记录条目
  3. 将用户添加到会话

问题:

  1. 我需要为AsyncCallback上面的每一项写东西吗?
  2. 客户端上的每个操作都应该有一个带有AsyncCallbackonFailureonSuccess的操作吗?不是太多的编码(与struts相比吗?)

因此,目前我的代码看起来是这样的,它在onSuccess中嵌套了2个onSuccess,这是一个很大的问题,因为在屏幕上放置一条供最终使用的消息之后,SessionService的执行就会出现。

代码语言:javascript
复制
            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 
                            }});
                    }        
              });
EN

回答 1

Stack Overflow用户

发布于 2015-08-27 13:24:37

asynccallback对于每个GWT调用都是必需的,也就是说,我们能够根据服务器来管理用户的操作。

面对实际的问题,您需要有多个RPC嵌套。只需修改您的isValidUser服务器端实现,这样它也可以将用户添加到会话中。

代码语言:javascript
复制
User isValidUser(User user) {
//validate user with DB
//if valid, add to session
return user
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32250545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档