Я думаю, что вы путаете это: то, что Struts2 помещает в стек, это не свойства, а объекты, которые содержат эти свойства.
Допустим, в вашем JSP вы пишете
<s:property value="xxx" />
Затем Struts2 выполнит итерацию в вашем стеке, чтобы найти объект со свойством xxx
, то есть класс, который имеет открытый метод getXxx()
. А Struts2 помещает ваше текущее действие (экземпляр SampleAction
) на вершину стека. Таким образом, он сначала будет искать метод SampleAction.getXxx()
- если он не найден, он будет смотреть вниз по стеку. (на самом деле вы можете поместить другие объекты в стек выше Action - возможно, в том же jps - но пусть это будет просто).
Тогда, в вашем примере, все sampleArray1 sampleArray2 lst
(если у них есть публичные геттеры) будут доступны в jsp. Но дело не в том, что sampleArray1
«в стеке» (даже меньше его элементов!), Действие в стеке.
Так, например, вы могли бы написать:
<s:iterator value="sampleArray1">
<p>item is: <s:property/></p>
</s:iterator>
Здесь, в первой строке, свойство sampleArray1
находится в действии, которое находится в стеке. Затем тег итератора помещает каждое значение в sampleArray1 в верхнюю часть стека значений, которое захватывается во второй строке и печатается.