Struts2 动态方法调用

可以通过以下几种方式实现Struts2动态方法调用:

1、指定多个对应action的method(不指定的默认对应execute方法),result标签当中未指定name属性则默认为SUCCESS

代码片段:

<action name="addAction" method="add" class="action.Struts2_1">
<result>/add.jsp</result>
</action>
<action name="updateAction" method="update" class="action.Struts2_1">
<result>/update.jsp</result>
</action>

2、感叹号方式(不推荐):在一个action里面设置多个带有名字的result,并且设置对应名字返回值的方法,调用的时候,在action域名后面加上!写入对应方法的名字 通过不同方法的不同返回值调用对应的result。需要在structs.xml设置:

<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

代码片段:

<action name="addAction" class="action.Struts2_1">
<result name="add">/add.jsp</result><!--匹配调用的方法的返回结果与name属性值-->

3通配符方法(推荐):{1}对应第一个*输入的字符串{2}对应第二个*位置输入的字符串{3}对应第三个*输入的字符串等等 。使用通配符可以指定不同包下的不同Action类的不同方法。指定方法的对应通配符空缺会默认调用execute方法。

代码片段:

<action name="struts2_1_*_*_*" method="{3}" class="{1}.{2}">
<result>/result.jsp</result>
<result name="{3}">/{3}.jsp</result><!-- 使用通配符方式 (匹配调用的方法的返回结果与name属性值,相同则显示对应的jsp页面-->
</action>


此外如果在struts2.5下使用感叹号方式或通配符方法,需要在 struts.xml 添加了这么个属性:<global-allowed-methods>regex:.*</global-allowed-methods>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值