我有一个包含所有RPC的类。 其中之一是:
public void authenticateUserCall(String username,String password ,DBConnectionAsync rpcService)
{
AsyncCallback<UserIdent> callback = new AsyncCallback<UserIdent>() {
public void onFailure(Throwable caught) {
Window.alert("Wrong Username or Password");
}
public void onSuccess(UserIdent result) {
Window.alert(result.getUserName());
}
};
rpcService.authenticateUser(username, password, callback);
}
如果RPC成功,我想将页面布局更改为用户的主页面。 那么如何向RPC发送RPC成功的onModule呢? 我不想在onSuccess中构建布局,而且我无法清除登录布局,因为我没有在onSuccess方法上使用它。 什么是正确的方法?
答案 0 :(得分:1)
选项1:
一些建议是将AsyncCallback作为参数传递给authenticateUserCall。通过这种方式,呼叫者可以成功处理。
选项2:推荐
另一个可以提供更大灵活性的选项是使用EventBus来触发自定义AuthenticationEvent。我用它来处理像角色这样的事情。因此,例如,当用户成功通过身份验证时,它将返回一些有关用户的信息,例如用户名,密码和角色。然后,我使用EventBus触发AuthenticationEvent,其中包含有关用户的此信息。我的任何观点和活动都可以在活动总线上注册此活动并进行相应处理。因此,例如,如果用户不是管理员,我的许多视图将禁用功能。当我的一个活动处理此事件时,它将灰显需要管理员访问权限的操作按钮。