2012-04-18 60 views

回答

0

我我的申請,我使用隱藏的箱子在jsp:

<input type="hidden" id="dir_lat" value="<%= request.getattribute("foo") %>"/>

,然後獲得在gwt.application值:

String foo = ((InputElement) doc.getElementById("dir_lat")).getValue() ;

+0

如果我想將整個Java對象(駐留在會話屬性中)傳輸到服務器端,該怎麼辦? – HashimR 2012-04-18 06:51:24

+0

我不知道!?我想最簡單的(不是最簡單的)應該是在隱藏框中序列化/反序列化。 – Overnuts 2012-04-18 06:53:28

+0

如果你需要一個完整的對象,那麼使用JSON最簡單。看看struts2 json插件,它會使序列化非常簡單。 – Quaternion 2012-04-18 06:55:16

1

我是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的形式將其返回給客戶端。

+0

我想要它在GWT入口點類。 – HashimR 2012-04-18 07:06:12

1

答案是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?

Semi dynamic constants in GWT

Can GWT Properties be used from the server?


但傳遞會話信息到入口點可能是不利的。乞討的問題是,當會話過期並且GWT客戶端仍在瀏覽器上時會發生什麼?

我想你可以檢查,如果會話是陳舊的,你做一個window.location調用來刷新GWT客戶端。這不是一個好的做法。使用AJAX的原因之一就是不必說你很抱歉(我的意思是,不必刷新你的頁面),同時進行客戶端 - 服務器數據交換。

你應該通過各種各樣的靜態信息從服務器到客戶端的JSP +字典的方式,但不是會話。

您的體系結構應該在會話過期時強制進行重新身份驗證,並且會話信息應作爲標頭(如果您使用的是REST或RequestBuilder)或作爲回調響應數據結構(如果使用RPC)的一部分攜帶。

+0

如果會話中存在整個Java對象,那麼我們如何將它分配給JavaScript'var'? – HashimR 2012-04-20 09:46:41

+0

我遺漏了Dictionary對象作爲分層結構圖進行訪問的事實,因爲var可以是JS對象的層次結構。看一下有一個簡單例子的詞典的GWT javadoc。每個var都可以使用它的var名稱作爲key來訪問thro Dictionary。 – 2012-04-27 04:12:48

相關問題