我想在GWT app中获得会话属性.我得到这样的Session
HttpServletRequest request = this.getThreadLocalRequest();
System.out.println("Check HttpServletRequest");
HttpSession session = request.getSession();
Run Code Online (Sandbox Code Playgroud)
但this.getThreadLocalRequest()总是如此null.
代码:
客户:
@RemoteServiceRelativePath("service.s3gwt")
public interface getAttributeSession extends RemoteService
{
String getSessionAttribute(String name);
}
public interface getAttributeSessionAsync
{
void getSessionAttribute(String name, AsyncCallback<String> callback);
}
Run Code Online (Sandbox Code Playgroud)
服务器:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import daTotNghiep.client.service.getAttributeSession;
public class getAttributeSessionImpl extends RemoteServiceServlet implements getAttributeSession
{
private static final long serialVersionUID = 1L;
public String getSessionAttribute(String name)
{
// TODO Auto-generated method stub
HttpServletRequest request = this.getThreadLocalRequest();
System.out.println("Check HttpServletRequest");
if(request == null) System.out.println("SO BAD");
// HttpSession session = request.getSession();
// System.out.println("ID session "+session.getId());
return "";
}
}
Run Code Online (Sandbox Code Playgroud)
当调用方法getSessionAttribute()我看到this.getThreadLocalRequest()总是返回null.所以为什么?以及如何解决它?
该方法getThreadLocalRequest()在类中实现AbstractRemoteServiceServlet,该类由 继承RemoteServiceServlet。该实现仅为方法设置字段perThreadRequest(由 所使用) 。这意味着,仅当从 POST 请求中调用该请求时才会返回该请求,并且仅当您在未调用 super 方法的情况下未进行覆盖时才返回该请求。getThreadLocalRequest()doPost()getThreadLocalRequest()doPost()
所以为了确保getThreadLocalRequest()不会返回null
doPost()在未调用的情况下覆盖super.doPost()| 归档时间: |
|
| 查看次数: |
4240 次 |
| 最近记录: |