Redirect Struts2重定向操作:Params拦截器和工作流?

Redirect Struts2重定向操作:Params拦截器和工作流?,redirect,struts2,action,params,Redirect,Struts2,Action,Params,我的Struts2应用程序的常见用例是,我有收集JSP页面上显示的数据的操作。我将这些称为视图操作 但我也有逻辑动作,在后台“做”一些事情(比如注册用户)。它们可能还有一个需要在JSP上显示的bean,但我需要将结果重定向到一个视图操作 遗憾的是,我需要的来自第一个操作的bean没有被传输到ValueStack,而只是来自视图操作的getter的值。例如: <action name="mailConfirm" class="de.abelssoft.updateyeti.Frontend.

我的Struts2应用程序的常见用例是,我有收集JSP页面上显示的数据的操作。我将这些称为视图操作

但我也有逻辑动作,在后台“做”一些事情(比如注册用户)。它们可能还有一个需要在JSP上显示的bean,但我需要将结果重定向到一个视图操作

遗憾的是,我需要的来自第一个操作的bean没有被传输到ValueStack,而只是来自视图操作的getter的值。例如:

<action name="mailConfirm" class="de.abelssoft.updateyeti.Frontend.MailConfirmer">
  <result name="login" type="redirectAction">
    <param name="actionName">register</param>
    <param name="email">${person.email}</param>
  </result>
  <result name="input" type="redirectAction">
    <param name="actionName">register</param>
  </result>
</action>

登记
${person.email}
登记

我这里缺少的模式是什么?或者我必须在响应上下文中存储我所需的所有内容吗?

我对这个问题没有答案,所以我会告诉你我做了什么。很抱歉没有提供“好答案”

我写了两个拦截器。一个用于将消息对象临时存储在用户会话中的逻辑操作,另一个用于将消息对象从用户会话中移除的my view操作


我在需要的地方使用了逻辑操作拦截器,并在所有其他操作中使用了viewaction拦截器,以确保在查看操作之前发生了操作重定向时,将找到并使用消息对象。

这不是很清楚。你所说的“在后台做某事的动作”是什么意思?动作总是执行一些逻辑来响应web请求。你能详细说明你的场景吗,或者举个例子吗?例如:一个用户向action submitComment提交了一个表单中的评论。调用的URL是“submitComment.action?comment=thisisacomment”。submitComment操作中的一个字段设置了注释的字符串,因此消息“您的注释'thisisacomment'已添加”。另一个例子是上面的“registerUser.action”电子邮件=example@example.com". 发生数据库错误,应将此情况通知用户。这些操作的结果是呈现所查看JSP的其他操作。我希望第一个操作中的消息/对象可用于第二个操作。抱歉。至少对我来说,你的例子说明不了多少。“这些操作的结果是呈现已查看JSP的其他操作”-通常您没有专门用于显示结果的操作,这与MVC背道而驰。结果(99%的时间)显示在从执行的操作读取数据的JSP中。结果type=“redirectAction”在Struts2应用程序中应该很少见。我推荐曼宁的“Struts2 in Action”,感谢您的回复。通常情况下,Struts2操作的结果是一个JSP,就像您想要显示数据库中的数据一样。但是,如果某个操作没有为视图收集数据,而是触发了一个逻辑操作(如将用户的电子邮件添加到数据库),则可能需要将用户重定向到视图呈现操作。如下所示:/list.jsp info${sid}