0

私が調査した内容に基づいて、 や などのタグ<s:set><s:push>作成することで、または<s:bean>への参照を直接挿入できることがわかりました。これは私をとても混乱させます。なぜなら、すべてを保管するための専用の場所を 1 つだけ持つことができないからです。基本的に として機能するため、おそらくすべてを に入れるだけです。ActionContextValueStackActionContextServletContext

さらに紛らわしいことに、 の値にアクセスしたい場合はValueStackなどの Struts タグを使用する必要がありますが<s:property>、値が に格納されているだけの場合は、OGNL が提供するプレフィックスをActionContext使用するだけです。#value

誰かが私のためにこれを片付けてもらえますか? Spring を使用したとき、必要なもの (リクエスト、セッション、applicationContext) はすべて内部にServletContextあり、Web ページでこれらの値にアクセスするには、$プレフィックスを使用してコンテキスト内のあらゆるものにアクセスできたと思います。

4

1 に答える 1

0

すべての場所には専用のストレージがあり、後で使用するためにオブジェクトを配置したり、何らかの呼び出しコンテキストで実行して取得したりできます。フレームワークが実行されているコンテキストはすべて関連付けられます。コンテキストは、Java または OGNL などの他の式言語 (EL) を使用してアクセスできる、スコープ内のオブジェクト間で通信する方法です。

OGNL では、アクション コンテキストは OGNL コンテキストであり、値スタックはルートです。

フレームワークは、OGNL コンテキストを ActionContext に設定し、値スタックを OGNL ルート オブジェクトに設定します。(値スタックはいくつかのオブジェクトのセットですが、OGNL には単一のオブジェクトのように見えます。)フレームワークは、値スタックに加えて、アプリケーション、セッション、および要求コンテキストを表すマップなど、他のオブジェクトを ActionContext に配置します。これらのオブジェクトは、値スタック (OGNL ルート) と一緒に ActionContext に共存します。

はでActionContextあるThreadLocalため、1 つのスレッドで使用できます。このスレッドからアクション コンテキスト/値スタックを取得する最善の方法は、静的メソッドを使用することです。

ActionContxt ctx = ActionContext.getContext();
ValueStack vs = ctx.getValueStack();

インターセプターには、アクション コンテキストである呼び出しコンテキストと呼ばれるパラメーターも渡されます。

値スタックにも独自のコンテキストがあり、検証にも独自のコンテキストがあります。したがって、これらの定義には終わりがありません。

于 2015-02-27T14:14:17.400 に答える