1. 动态方法调用
如果Action中存在多个方法时,我们可以使用"namespace+action名+!+方法名"调用指定方法。如http://localhost:8080/Struts2_03/user/userOperator!delete.action。但是struts2官方并不推荐这种方式,他推荐使用通配符的方式实现类似struts1.x的dispatchAction的功能。
默认情况下, Struts 的动态方法调用处于激活状态, 若想禁用该功能, 则可以在 struts.xml 文件中添加如下 constant 元素:
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
UserAction.java
struts-user.xml
当浏览器输入:http://localhost:8080/Struts2_03/user/userOperator(不写方法的话,默认调用method属性的方法) , .../user/userOperator!add,
.../user/userOperator!add.action
当浏览器输入:http://localhost:8080/Struts2_03/user/userOperator!delete, .../user/userOperator!delete.action
2. 通配符调用Action中的方法
可以在<action>的name属性中使用"*"通配符,然后在<action>class,method属性及<result>的name属性和<result>的值中通过"{通配符索引}"引用通配符"*"的值,如:
通配符映射
(1)一个 Web 应用可能有成百上千个 action 声明. 可以利用 struts 提供的通配符映射机制把多个彼此相似的映射关系简化为一个映射关系
(2)通配符映射规则
通配符的使用
struts-product.xml
ProductAction.java
浏览器上输入:http://localhost:8080/Struts2_03/product/ope_Product_delete , .../product/ope_Product_delete.action
浏览器上输入:http://localhost:8080/Struts2_03/product/ope_Product_add , .../product/ope_Product_add.action
转发时,请注明来源:动态方法调用和使用通配符调用Action中方法