跨2个不同的struts-action流使用请求

时间:2014-03-12 09:30:56

标签: java action httprequest struts-action struts-1

我有一个struts动作流程(struts-1.x框架),当执行时,动作类ActionFlowActionUnit1.javaString变量varName设置为request使用代码

request.setAttribute("varNameFromRequest", varName);

并且流程最终导致加载jsp Page1.jsp

现在,Page1.jsp包含一个按钮,当单击该按钮时,会启动一个新的struts操作流,该流具有操作类ActionFlowActionUnit2.java。在本课程中,我想使用我在varName请求中设置的request.getAttribute()

我怎样才能不使用会话

从技术上讲,我不确定是否可以使用request实现此目的,因为触发新的struts-action将丢失之前设置的request中的所有其他信息(如果我'我正确的。)

我无法从谷歌那里得到任何东西。

1 个答案:

答案 0 :(得分:1)

正如你所说的那样,技术上并不是你想要的(来自浏览器的每个http请求都会创建一个新的HttpServletRequest对象)

您有两个选择:

  • 根据我的理解使用您想要避免的Session
  • 使用您想要保留的值在每个连续请求中来回传递一些参数。

第二个选项意味着将一些参数存储在Page1.jsp <form>中,并使用您需要接收第二个动作的变量,然后进行冲洗并重复。这是一个纯粹的html表单解决方案。

如果您正在实现复杂的流程,那么看一下Spring Webflow就是一个很好的例子。在那里,您可以管理流级变量,这些变量存储在与请求或会话“不同”的范围内,并且看起来完全符合您的要求。

http://projects.spring.io/spring-webflow/