我可以用幾種方式在ValueStack
上設置一個屬性。Struts2中應用程序的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().
我想知道有關這些設置方法的生命週期。它是否跨越應用程序?是否爲每個請求創建了ValueStack,併爲其設置了應用程序和會話值?
我知道第四種方法是最常用的方法,但我可能不會在所有地方使用這種方法,其中操作類不容易訪問。
我對自己在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()-->
訪問其他疑問,我也想知道怎麼點在5日都stack.getContex().put()
和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
說了這些,我有點傾向於使用stack.getContext().put()
方法,我可以清楚地看到中的值設置URL作爲?調試=瀏覽器。告訴我,如果我出錯了。
我正在嘗試使用值堆棧來傳遞預結果鉤子和一些泛型pojos中的某些數據集,以便某些setter和getter不會在所有操作類中重複。在一個場合中,我返回一些數據作爲流結果,因爲我需要在Action類中獲取數據表單值棧。 – 2011-02-19 09:08:31