0

bean タグ docsの例を次に示します。

<s:bean name="org.apache.struts2.example.counter.SimpleCounter" var="counter">
  <s:param name="foo" value="BAR" />
  The value of foot is : <s:property value="foo"/>, when inside the bean tag <br />
</s:bean>

次に、説明を次に示します。

この例では、呼び出された Bean をインスタンス化し、プロパティ ( )SimpleCounterを設定します。次に、オブジェクトは値スタックにプッシュされます。これは、プロパティ タグを使用してそのアクセサー メソッド ( ) を呼び出して、それらの値を取得できることを意味します。foosetFoo('BAR')SimpleCountergetFoo()

上記の例では、id は counter の値に設定されています。これは、SimpleCounterクラスがスタックのコンテキストに配置されることを意味します。SimpleCounterStruts タグを使用してクラスにアクセスできます。

<s:property value="#counter" />

私の質問は、Bean タグで属性 var に言及した場合SimpleCounter、値スタックまたはスタックのコンテキストに配置されるかどうかです。(スタック コンテキストをアクション コンテキストとして使用していますよね?)

値スタックの場合、値スタックの代わりにアクションコンテキストから値を参照するために使用される#カウンター変数を参照しているのはなぜですか。#右?

4

1 に答える 1

0

違う。

#「アプリケーション コンテキスト」は、純粋にサーブレット仕様のアーティファクトであり、OGNL文字とは直接関係ありません。OGNL#を使用すると、適切な値が見つかるまで値スタックをたどるのではなく、名前付きの値スタック値にアクセスできます。

また、「[...] ID は次の値に設定されています」と言うのも不正確ですcountercounter値スタック内の名前付きの値です。値スタックは、コンテキストとスタックの組み合わせと考えています。スタックはありますが、スタックにない#attr名前付きの値もあります。

また、これを「アクション コンテキスト」と呼ぶのは正確ではないと思います。これは、Struts 2 アプリケーションのコンテキストで特定の意味を持ち、実際には Java ソース側でのみ意味があるためです。

スタックと名前付きの値を含む単純な「値スタック」です。

于 2012-07-02T19:46:54.800 に答える