あなたはこれを混乱させていると思います。Struts2がスタックに置くのはプロパティではなく、それらのプロパティを保持するオブジェクトです。
あなたのjspであなたが書いたとしましょう
<s:property value="xxx" />
次に、Struts2はスタック内で反復処理を行い、プロパティを持つオブジェクトxxx
、つまりパブリックメソッドを持つクラスを見つけますgetXxx()
。また、Struts2は、現在のアクション(のインスタンスSampleAction
)をスタックの一番上に配置します。したがって、最初にSampleAction.getXxx()
メソッドを検索します。見つからない場合は、スタックをさらに下に検索します。(実際には、他のオブジェクトをスタックのアクションの上に置くことができます-おそらく同じjps-ですが、シンプルに保つことができます)。
次に、あなたの例では、すべてsampleArray1 sampleArray2 lst
(パブリックゲッターがある場合)がjspでアクセス可能になります。しかし、それsampleArray1
は「スタック内」ではなく(その要素はさらに少ないです!)、アクションはスタック内にあります。
したがって、たとえば、次のように書くことができます。
<s:iterator value="sampleArray1">
<p>item is: <s:property/></p>
</s:iterator>
ここで、最初の行で、sampleArray1
プロパティはアクション、つまりスタックにあります。iteratorタグは、sampleArray1内の各値を値スタックの最上位に配置します。これは2行目で取得され、出力されます。