我正在编写一个使用Google App Engine的测试应用程序。我想使用默认的UserService提供登录功能。要登录,我从客户端向服务器发出了一个请求:
public class ShoppingList implements EntryPoint {
...
private ShoppingListServiceAsync service = (ShoppingListServiceAsync) GWT.create(ShoppingListService.class);
public void onModuleLoad() {
login();
}
private void login() {
AsyncCallback callback = new AsyncCallback() {
@Override
public void onFailure(Throwable caught) {
Window.alert("Login failed.");
}
@Override
public void onSuccess(Object result) {
Window.open((String) result, "_self", "");
}
};
// Get login URL; after login, return to current page.
service.getLoginURL(GWT.getHostPageBaseURL(), callback);
}
}
服务器生成登录URL,该登录URL返回给客户端:
public class ShoppingListServiceImpl extends RemoteServiceServlet implements ShoppingListService {
...
@Override
public String getLoginURL(String returnURL) {
UserService userService = UserServiceFactory.getUserService();
Boolean loggedIn = userService.isUserLoggedIn();
String url = userService.createLoginURL("http://google.com");
User user = userService.getCurrentUser();
return returnURL;
}
}
该代码编译并运行。现在,我的问题是userService对象以某种方式未正确加载。当我在其上调用任何方法时(例如isUserLoggedIn()),将引发空指针异常。我想念什么?
最佳答案
由于您没有发布UserServiceFactory的代码,因此很难找出问题的根源。但是我猜想UserService-Instance在您的Factory中未正确实例化。
关于java - GWT中的UserService,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20353135/