2014-11-25 38 views
0

我正在使用struts2应用程序。struts2中的中间重定向

我有一个表单提交的触发动作,一旦他的是:

<action name="AddDataAction" class="saisie.AddAction" method="add"> 

我需要创建一个中间页面,用户需要做这个动作之前再次登录。

困难的是,我只能修改struts.xml来创建中间状态,并且在用户登录后,它必须使用表单中的参数(保存在数据库中)执行此addDataAction方法。

我想过拦截器,但他们可以重定向到一个jsp并调用一个操作来验证用户登录,同时保存表单的数据以保存,如果用户登录正确?

回答

0

您可以使用result type redirectAction来实现此目的。

<action name="OtherAction" class="saisie.OtherAction" method="otherMethod"> 
    <result name="redirect" type="redirectAction"> 
     <param name="actionName">loginAction</param> 
     <param name="yourParamName">${yourParamName}</param> 
    </result> 
</action> 

您可以通过将参数值添加到结果中来保留参数值。请注意使用$ {}。它所做的就是调用相应的getter并将它们添加到url中。那么接下来的页面上,这些值将被映射到相应的变量使用setter方法

你可以阅读更多关于redirectAction的redirectAction到验证用户的登录的动作的调用后,所以导致here

+0

,不从AddAction添加的方法被自动调用? (如递归实现) – Antt 2014-11-25 15:28:27

+0

不需要,你也需要重定向到那个并且添加参数 – steven35 2014-11-25 15:32:10

+0

如果我理解正确,你的代码将在AddAction之前执行方法add,然后它重定向到其他动作,所以我应该只把类型重定向并且在我的新动作中,将结果中的redirectAction转换为调用AddAction中的方法添加的操作。 – Antt 2014-11-25 15:44:18