我有一个应用程序,我想用新条目修改(或覆盖)struts.xml中的动作映射。 有关详细说明,请参见方案。
在我的应用程序中,我有不同的阶段,如registration,change_data,我使用context Param
管理这些。
Web.xml中
<context-param>
<description>Current stage of the application</description>
<param-name>stage</param-name>
<param-value>registration</param-value>
</context-param>
我有一个行动,即支付网关的重定向请求,即支付网关正在向用户发送此操作。
struts2.xml(演示条目)
<!-- for registration -->
<action name="paymentResponse" class="abc.xyz.PaymentResponse">
<result name="input" type="tiles">paymentForReg.tiles</result>
<result name="success" type="tiles">home.tiles</result>
</action>
<!-- for change data -->
<action name="paymentResponse" class="abc.xyz.PaymentResponseForChangeData">
<result name="input" type="tiles">paymentForChangeData.tiles</result>
<result name="success" type="tiles">home.tiles</result>
</action>
因此,当应用程序的阶段发生变化时,我正在做的是web.xml
中的更改阶段,并评论来自struts.xml
总而言之,我有多个具有相同名称的操作,我想在context param
的基础上触发(或更改操作类名称)操作。有没有办法做到这一点?
答案 0 :(得分:0)
如果我没有错,我认为你必须使用如下的动态动作,那么你可以在xml中使用相同的动作和相同的条目
struts.xml中:
<action name="paymentResponse" class="abc.xyz.RedirectPaymentResponse" method="updateCriteria">
<result name="response" type="tiles">paymentForChangeData.tiles</result>
<result name="responsechanged" type="tiles">paymentForReg.tiles</result>
<result name="success" type="tiles">home.tiles</result>
</action>
动作类:
public class RedirectPaymentResponse extends AbstractAppAction {
public String execute () throws Exception
{
// some code
return "success";
}
public String updateCriteria(){
//logic here
if(PaymentResponse){
// code here
return "response";
}
if(PaymentResponseChanged){
// code here
return "responsechanged"
}
}