Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine gwt appengine-用户服务返回页_Google App Engine_Gwt_Service - Fatal编程技术网

Google app engine gwt appengine-用户服务返回页

Google app engine gwt appengine-用户服务返回页,google-app-engine,gwt,service,Google App Engine,Gwt,Service,我有一个完整的gwt主页,它有一个登录按钮(rpc) 这是服务实现(与示例一样): UserService UserService=UserServiceFactory.getUserService(); HttpServletRequest=this.getThreadLocalRequest(); 字符串消息=”; 字符串thisURL=request.getRequestURI(); Principal=request.getUserPrincipal(); if(principal==n

我有一个完整的gwt主页,它有一个登录按钮(rpc)

这是服务实现(与示例一样):

UserService UserService=UserServiceFactory.getUserService();
HttpServletRequest=this.getThreadLocalRequest();
字符串消息=”;
字符串thisURL=request.getRequestURI();
Principal=request.getUserPrincipal();
if(principal==null){
message=“请。

”; } 否则{ message=“Hola”+principal.getName()+”.Puedes.

”; } 返回消息;
我让doGet方法为空


然后,当我登录/注销时,它会将我重定向到一个空白页面(到myApp/myServlet),但我想返回到我所在的页面(我的gwt主页或我所在的任何地方)。

点a:
request.getRequestURI()方法。此方法将始终返回处理当前请求的servlet的URL

B点:在
userService.createLoginURL(thisURL)
中,
thisURL
实际上是用户成功登录后应重定向到的URL。在您的情况下,此URL指向您当前的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;
UserService UserService=UserServiceFactory.getUserService();
HttpServletRequest=this.getThreadLocalRequest();
字符串消息=”;
字符串thisURL=”http://www.yourapp.com/home";
Principal=request.getUserPrincipal();
if(principal==null){
message=“请。

”; } 否则{ message=“Hola”+principal.getName()+”.Puedes.

”; } 返回消息;

^请注意为该URL设置的值。

您好,谢谢您的回答,我同时做了类似的操作,但问题是我需要返回到以前的页面,我的意思是,如果我在第1页,我需要在登录后返回,有没有办法做到这一点?我明白了。那么,您是否可以将当前页面url(比如foo.com/page1.html)作为参数传递给servlet,该servlet创建注销消息并返回给用户?
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;