Я могу установить свойство на ValueStack
несколькими способами.
ValueStack stack = ActionContext.getContext().getValueStack();
stack.getContext().put("resultDTO",resultDTO); //1. creates a different branch
//parallel to root
stack.set("resultDTO", resultDTO); //2. pushes on root as a Map?
stack.push(resultDTO); //3. pushes on root
myActionClass.setProperty(); //4. normal action accessor
Мне нужно иметь возможность вернуть все эти значения обратно в JSP, freemarker и java, например
stack.findValue() or stack.findString().
Я хочу знать о жизненном цикле каждого из этих 4 методов настройки. Это через приложение. ValueStack создается каждый запрос, и значения приложения и сеанса в нем устанавливаются для каждого запроса?
Я знаю, что 4-й метод является наиболее распространенным, но, возможно, я не буду использовать его во всех местах, где класс действий недоступен.
У меня есть еще одно сомнение по поводу доступа в JSP
<s:push value="resultDTO" ><s:property value="data.form1[0]" /></s:push>
<!--5.works for context.put() & stack.set() both-->
<s:property value="#resultDTO.data.form1[0].countryofissue" /> <!--6.context.put()-->
<s:property value="resultDTO.data.form1[0].countryofissue" /> <!--7.stack.set()-->
<s:property value="data.form1[0].countryofissue" /> <!--8.stack.push()-->
Я также хочу знать, как работает пятая точка в stack.getContex().put()
и stack.set()
? Я понимаю, что в 6-ом resultDTO , к которому я обращаюсь, это другой корень, а в 7-м, это дочерний элемент корня по умолчанию, который является ValueStack. В восьмом он начинает поиск с корня по умолчанию.
Я прошел http://struts.apache.org/2.0.11.1/docs/ognl.html, http://struts.apache.org/2.1.2/struts2-core/apidocs/com/opensymphony/xwork2/util/ValueStack.html и довольно запутал эту ссылку http://www.opensymphony.com/ognl/html/DeveloperGuide/introduction.html#embeddingOGNL
Сказав все это, я немного склонен к использованию метода stack.getContext().put()
, поскольку я могу четко видеть значения, задав URL-адрес как ? Debug = browser . Посоветуйте мне, если я ошибаюсь.