【发布时间】:2012-05-07 14:07:35
【问题描述】:
我想知道我们是否可以将会话属性和参数从 JSP 传递到 GWT 入口 点。
就像我将 Struts2 与 GWT 集成一样。
现在,我的问题是,我们能否将会话属性从 JSP 传递到 GWT 入口点? 提前致谢。
【问题讨论】:
我想知道我们是否可以将会话属性和参数从 JSP 传递到 GWT 入口 点。
就像我将 Struts2 与 GWT 集成一样。
现在,我的问题是,我们能否将会话属性从 JSP 传递到 GWT 入口点? 提前致谢。
【问题讨论】:
答案是JSP + GWT Dictionary 类。
使用 JSP(而不是 html 文件)作为托管文件,在 GWT 加载模块后随时调用 Dictionary 类。
<script>
var info = {js object structure}; // Use Dictionary class to retrieve info.
</script>
GWT-Platform login + session management
Where to strore config parameteres in GWT?
Can GWT Properties be used from the server?
但是将会话信息传递给入口点可能并不有利。乞求的问题是,当会话过期而 GWT 客户端仍在浏览器上时会发生什么?
我想你可以检查一下如果会话是陈旧的,你可以调用 window.location 来刷新 GWT 客户端。这不是一个好习惯。使用 AJAX 的原因之一是在进行客户端-服务器数据交换时不必说对不起(我的意思是,不必刷新页面)。
您应该通过 JSP+Dictionary 的方式将各种静态信息从服务器传递到客户端,但不能用于会话。
您的架构应强制在会话到期时重新进行身份验证,并且会话信息应作为标头携带(如果您使用 REST 或 RequestBuilder)或作为回调响应数据结构的一部分携带(如果使用 RPC)。
【讨论】:
var ?
我不明白你为什么要传递会话对象,毕竟你想在GWT Servlet 中使用它而不是在GWT UI 一边我是对的吗?
GWT Servlet 中的 session 对象可以通过以下方式获取:
HttpServletRequest request = this.getThreadLocalRequest();
HTTPSession session = request.getSession();
之后,您可以使用以下方法来获取和设置会话属性:
session.setAttribute("XXX", object);
session.getAttribute("XXX")
编辑:
我认为没有直接的解决方案,解决方法如下:
在入口点从onModuleLoad 调用GWT 的服务器端代码,它可以访问session 对象。
HttpServletRequest request = this.getThreadLocalRequest();
HTTPSession session = request.getSession();
从会话对象中获取你想要的属性和参数,并以beans的形式返回给客户端。
【讨论】:
我的应用程序,我在 jsp 中使用隐藏框:
<input type="hidden" id="dir_lat" value="<%= request.getattribute("foo") %>"/>
然后获取gwt.application中的值:
String foo = ((InputElement) doc.getElementById("dir_lat")).getValue() ;
【讨论】: