struts2 - понимание стопки значения

Я использовал MSBuild и NAnt, и я предпочитаю MSBuild, в основном потому, что по умолчанию требуется гораздо меньше настроек. Хотя вы можете чрезмерно усложнять вещи и загружать MSBuild с большим количеством ненужных настроек, в простейшем случае вы можете просто указать его на файл решения / проекта и запустить его, что в большинстве случаев в большинстве случаев достаточно.

17
задан Abimaran Kugathasan 11 March 2014 в 06:26
поделиться

3 ответа

Хорошо, я понял это.

1) Я нашел способ получить объекты в стеке значений, чтобы мы могли получить к ним доступ из jsp, примерно так:

Map<String, Object> context = new HashMap<String, Object>();
context.put("key", "some object");
context.put("key2", "another object");
ActionContext.getContext().getValueStack().push(context);

В другом словами, мы можем поместить HashMap в стек значений, содержащий нужные нам объекты. Затем в jsp мы можем получить доступ к фактическим значениям следующим образом:

<s:property value="key" />
<s:property value="key2" />

Он будет просматривать стек значений и находить эти значения в HashMap, который мы отправили.

2) Экземпляр класса действия связан только с одним запросом. Поэтому, когда мы переходим к другому действию, а затем попадаем в другой jsp, то, что мы поместили в стек значений из первого действия, там не будет, поскольку у другого действия есть собственный стек значений. ссылка: http://www.manning-sandbox.com/thread.jspa?messageID=93045

Вы, ребята, можете свободно поправлять меня, если что-то из этого неверно или есть более разумные способы сделать это вещи :).

Спасибо.

15
ответ дан 30 November 2019 в 13:53
поделиться

Struts 2 добавляет ваше действие в начало стека значений при выполнении. Итак, обычный способ поместить материал в стек значений - это добавить геттеры / сеттеры для значений в ваш класс Action. Вы по-прежнему используете тег s: property для доступа к значениям.

Учебник по CRUD: http://struts.apache.org/2.1.6/docs/crud-demo-i.html

2
ответ дан 30 November 2019 в 13:53
поделиться

Обычно, как говорит Нейт, вы будете использовать поле в своем действии, так как действие всегда находится на ValueStack. Однако это не работает, если вы пишете код перехватчика, так как перехватчик исчезнет к моменту вызова шаблона (JSP/freemarker и т. Д.). Там вам нужно поместить какой-то java-бобоподобный объект на ValueStack, как вы это делаете выше.

0
ответ дан 30 November 2019 в 13:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: