在struts2中应用程序的ValueStack生命周期是什么?
我可以用几种方式在
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,并为每个请求设置了应用程序和会话值?
我知道第四种方法是最常用的方法,但我可能不会在所有地方都使用它,因为动作类不容易访问。
我对在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()
中第5点是如何工作的?据我所知,在第6个我访问的结果DTO是一个不同的根,在第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设置为“debug = browser”来清楚地看到值。如果我出错了,请告诉我。
没有找到相关结果
已邀请:
1 个回复
械怒等
是按要求。如果将值放在堆栈上,它们可以在请求中稍后访问(即在视图层中),但不会在重定向中存在,重定向将是一个新的HTTP请求并具有自己的
。 在正常情况下,将使用操作的setter方法在操作上设置URL或表单中的参数。在拦截器中,您可以直接向堆栈添加值。例如,
使用
方法发布在错误页面上使用的异常。
- 将键/值放入堆栈中的地图中。地图表示堆栈的上下文。
- 将键/值放入堆栈中的地图中。我不确定这与之前的方法有什么关系,除了它是一个不同的地图。
- 这将对象放在堆栈的根目录上。 你不应该在视图层中放置任何东西在堆栈中,所以我很好奇你要做的是什么,这需要它。