2012-04-18 5 views
0

セッション属性とパラメータをJSPからGWTエントリ ポイントに渡すことができるかどうかは疑問です。私はGWTとStruts2のを統合していると同じようにサーバのセッション変数と属性をGWTエンジンに渡すにはどうしたらいいですか?

は今、私の質問は、私たちは、GWTのエントリポイントにJSPからのセッション属性を渡すことができますか? ありがとうございます。

答えて

0

I私のアプリケーション、私はJSPに隠されたボックスを使用します。gwt.applicationで値を取得し、その後

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

と:

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

+0

私は(セッション属性に存在する)Javaオブジェクト全体をサーバー側に転送したいのですが? – HashimR

+0

私は知らない!私はシンプルな(簡単ではない)シリアライズする必要があります/隠しボックス内で逆シリアル化する必要があります。 – Overnuts

+0

オブジェクト全体が必要な場合は、JSONを使用するのが最も簡単です。 struts2 jsonプラグインを見ると、シリアライズが非常にシンプルになります。 – Quaternion

1

私はnですあなたがセッションオブジェクトを渡す必要がある理由を取得するには、GWT Servletでそれを使用したいのですが、GWT UIのサイドにはありません。

次の方法により、GWTのサーブレットでセッションオブジェクトを取得することができます

HttpServletRequest request = this.getThreadLocalRequest(); 
    HTTPSession session = request.getSession(); 

そして、あなたが方法を取得するには、以下のユーザーことができる後と設定されたセッション属性:

session.setAttribute("XXX", object); 
    session.getAttribute("XXX") 

EDIT:

私はまっすぐ前方に解決策がないと思い、この問題を回避するには、次のようにすることができ

EntryPoint オブジェクトにアクセスするonModuleLoadコールサーバーサイドコードからGWT。

HttpServletRequest request = this.getThreadLocalRequest(); 
    HTTPSession session = request.getSession(); 

セッションオブジェクトから必要な属性とパラメータを取得し、Beanの形式でクライアントに返します。

+0

GWTエントリーポイントクラスで欲しいです。 – HashimR

1

答えはJSP + GWT Dictionaryクラスです。ファイルをホストとして(代わりに、htmlファイルの)JSPを使用して

、モジュールのロード時にいつでもGWT後に辞書クラスを呼び出します。

Semi dynamic constants in GWT

Where to strore config parameteres in GWT?

GWT-Platform login + session management

<script> 
    var info = {js object structure}; // Use Dictionary class to retrieve info. 
</script> 

Can GWT Properties be used from the server?

しかし、エントリポイントにセッション情報を渡すことは有利ではないかもしれません。懇願する質問は、セッションが終了し、GWTクライアントがまだブラウザに残っているとどうなりますか?

セッションが古くなったら、window.locationを呼び出してGWTクライアントを更新することができます。それは良い習慣ではありません。 AJAXを使用する理由の1つは、クライアントとサーバー間のデータ交換を行いながら、申し訳ありませんが(あなたのページを更新する必要はありません)と言っている必要はありません。

staticの情報は、JSP +ディクショナリの方法でサーバーからクライアントに渡す必要がありますが、セッションでは使用できません。

アーキテクチャではセッションの有効期限が強制的に再認証され、セッション情報はヘッダー(RESTまたはRequestBuilderを使用している場合)として転送するか、コールバック応答データ構造(RPCを使用する場合)の一部として保持する必要があります。

+0

セッションにJavaオブジェクト全体が存在する場合、どうすればjavascript 'var'に割り当てることができますか? – HashimR

+0

辞書オブジェクトが階層マップとしてアクセスされているという事実は除外されています。これは、varがJSオブジェクトの階層になるためです。簡単な例がある場合は、DictionaryのGWT javadocを見てください。すべてのvarは、そのvar名をキーとして辞書にアクセスできます。 –