我想知道我們是否可以將會話屬性和參數從JSP傳遞到GWT條目 點。如何將服務器會話變量和屬性傳遞給GWT引擎?
就像我已經整合了Struts2和GWT。
現在,我的問題是,我們可以將JSP會話屬性傳遞給GWT入口點嗎? 在此先感謝。
我想知道我們是否可以將會話屬性和參數從JSP傳遞到GWT條目 點。如何將服務器會話變量和屬性傳遞給GWT引擎?
就像我已經整合了Struts2和GWT。
現在,我的問題是,我們可以將JSP會話屬性傳遞給GWT入口點嗎? 在此先感謝。
我我的申請,我使用隱藏的箱子在jsp:
<input type="hidden" id="dir_lat" value="<%= request.getattribute("foo") %>"/>
,然後獲得在gwt.application值:
String foo = ((InputElement) doc.getElementById("dir_lat")).getValue() ;
我是n ot得到你想要傳遞會話對象的原因,畢竟你想在GWT Servlet
中使用它,而不是在GWT UI
方我是對嗎?
您可以通過以下方式獲得GWT Servlet的會話對象:
HttpServletRequest request = this.getThreadLocalRequest();
HTTPSession session = request.getSession();
之後,你可以將用戶以下方法來獲取和設置會話屬性:
session.setAttribute("XXX", object);
session.getAttribute("XXX")
編輯:
我認爲那麼有沒有直接的解決方案,解決方法可以如下:
在EntryPoint中,從onModuleLoad
調用GWT的服務器端代碼,它將訪問session
對象。
HttpServletRequest request = this.getThreadLocalRequest();
HTTPSession session = request.getSession();
從會話對象獲取所需的屬性和參數並以bean的形式將其返回給客戶端。
我想要它在GWT入口點類。 – HashimR 2012-04-18 07:06:12
答案是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 +字典的方式,但不是會話。
您的體系結構應該在會話過期時強制進行重新身份驗證,並且會話信息應作爲標頭(如果您使用的是REST或RequestBuilder)或作爲回調響應數據結構(如果使用RPC)的一部分攜帶。
如果會話中存在整個Java對象,那麼我們如何將它分配給JavaScript'var'? – HashimR 2012-04-20 09:46:41
我遺漏了Dictionary對象作爲分層結構圖進行訪問的事實,因爲var可以是JS對象的層次結構。看一下有一個簡單例子的詞典的GWT javadoc。每個var都可以使用它的var名稱作爲key來訪問thro Dictionary。 – 2012-04-27 04:12:48
如果我想將整個Java對象(駐留在會話屬性中)傳輸到服務器端,該怎麼辦? – HashimR 2012-04-18 06:51:24
我不知道!?我想最簡單的(不是最簡單的)應該是在隱藏框中序列化/反序列化。 – Overnuts 2012-04-18 06:53:28
如果你需要一個完整的對象,那麼使用JSON最簡單。看看struts2 json插件,它會使序列化非常簡單。 – Quaternion 2012-04-18 06:55:16