7

それに対処するには、アプリケーション スコープ セッションを使用する必要があると思います。しかし、私はそれについての経験がありません。私はインターネットから得たさまざまな方法を試しました:

HttpServletRequest request;
HttpSession sess = request.getSession();
sess.setAttribute("name", name);

later in other page
HttpServletRequest request;
String=(String)request.getAttribute(name); 
//or HttpSession sess = request.getSession();
// sess.getAttribute(name);

すべて動作しません。vaadin がそれに対処するための特別な何かがあるのではないかと思います。私を助けてください。

4

3 に答える 3

2

Vaadin は、この問題を非常に簡単に解決できるように設計されており、ここでは通常の http 要求/応答サイクルについて考えなくて済みます。

典型的な Vaadin webapp (6 または 7) には、webapp への最初の接続を処理するクラスがあります (7 では UI クラスを拡張します)。その最初の接続から、変数、マップ、リスト、Plain Old Java Object (POJO) など、通常のアプリで行うように保持したい情報を保存するだけです。POJO を使用するとします。そのオブジェクトは、他の Java オブジェクトとまったく同じです。それを必要とするオブジェクトからアクセス可能な変数に保持します。Web アプリケーションに何らかのインタラクティブ機能を追加した場合、ユーザーはそのインタラクティブ コンポーネント (ボタン リスナーなど) を介してアプリケーションに再び「入り」ます。そのボタン リスナーから、ユーザーの「セッション」で以前に作成した POJO にアクセスできます。

それでおしまい。実際には驚くほど簡単で、http に触れる必要はありません (後でやりたい場合を除きます)。そして確かに、このレベルのストレージのスレッドローカルではありません。

于 2013-03-19T23:11:14.260 に答える
1

ThreadLocal 変数を使用してデータを保持できます。次に、変数からデータを取得して消去します。別のクラスからアクセスできるように、変数を public および static にすることを忘れないでください。

于 2013-03-19T10:01:52.990 に答える