いくつかの方法でプロパティを設定でき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()
また、 と の両方で5 番目のポイントがどのように機能するかを知りたいstack.set()
です。私がアクセスしている6番目のresultDTOは別のルートであり、7番目ではデフォルトルートの子であるValueStackであることを理解しています。8 番目では、デフォルトのルートから検索を開始します。
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
これらすべてを言ったので、URLを?debug=browserstack.getContext().put()
に設定することで値を明確に確認できるため、メソッドを使用する傾向はほとんどありません。私が間違っている場合は、私に助言してください。