我有一个完整的gwt主页,它有一个登录按钮(rpc)。
这是服务实现(就像示例一样):
UserService userService = UserServiceFactory.getUserService();
HttpServletRequest request = this.getThreadLocalRequest();
String message = "";
String thisURL = request.getRequestURI();
Principal principal = request.getUserPrincipal();
if(principal == null){
message = "<p>Please <a href=\"" + userService.createLoginURL(thisURL) + "\">sign in</a>.</p>";
}
else{
message = "Hola " + principal.getName() + ". Puedes <a href=\"" +
userService.createLogoutURL(thisURL)+ "\">sign out</a>.</p>";
}
return message;
我让doGet方法为空。
然后,当我登录/退出时,它会将我重定向到一个空白页面(到myApp / myServlet),但我想回到我所在的页面(我的gwt家或无论我在哪里)。
答案 0 :(得分:0)
A点:request.getRequestURI();
方法。此方法将始终返回正在处理当前请求的servlet的URL。
B点:在userService.createLoginURL(thisURL)
中,thisURL
实际上是用户在成功登录后应重定向到的URL。在您的情况下,thisURL指向您当前的servlet路径,而不是您希望用户重定向到的位置(参见A点)
也就是说,如果您想在成功登录后重定向用户的页面是www.yourapp.com/home
,那么您实际需要做的是这样的:
UserService userService = UserServiceFactory.getUserService();
HttpServletRequest request = this.getThreadLocalRequest();
String message = "";
String thisURL = "http://www.yourapp.com/home";
Principal principal = request.getUserPrincipal();
if(principal == null){
message = "<p>Please <a href=\"" + userService.createLoginURL(thisURL) + "\">sign in</a>.</p>";
}
else{
message = "Hola " + principal.getName() + ". Puedes <a href=\"" +
userService.createLogoutURL(thisURL)+ "\">sign out</a>.</p>";
}
return message;
^注意为thisURL设置的值。