Struts 2 — доступ к различным свойствам в ValueStack с одинаковым именем

Struts 2 сначала разрешает все имена свойств во время рендеринга представления для верхнего объекта в ValueStack. Но как можно получить доступ к свойству с тем же именем в объекте ниже в стеке?

Пример:

Допустим, у меня есть класс Action с именем MyAction, и у него есть свойство logDate. В представлении, отображаемом после вызова этого действия, есть следующее:

<s:iterator value="users" status="itStatus">
  <s:property value="logDate"/>
</s:iterator>

Теперь представьте, что объект User также имеет свойство logDate. Во время итерации Struts 2 всегда будет помещать текущий пользовательский объект в верхнюю часть ValueStack, эффективно разрешая все имена свойств относительно него. Но что, если я хочу получить доступ к logDate из действия? Как правильно это сделать?


person kaqqao    schedule 30.05.2010    source источник


Ответы (1)


Вы можете использовать индекс для просмотра подстека. Например: [0].logDate запустит поиск в конце стека и найдет logDate в пользовательском объекте. [1].logDate начнет поиск на один уровень глубже и найдет logDate в классе Action. Эта страница OGNL (см. раздел прямо над доступом к статическому свойства) содержит более подробную информацию, а вот еще одно объяснение.

person Rob Tanzola    schedule 30.05.2010
comment
Хороший! Большое спасибо за такой быстрый ответ :) P.S. Есть ли способ отметить вопрос как ответ? - person kaqqao; 30.05.2010
comment
Добро пожаловать - рад, что это помогло. Рядом с ответом должна стоять пустая галочка. Щелкнув по нему, он станет зеленым, чтобы принять его. - person Rob Tanzola; 30.05.2010