这里介绍两种动态调用action中的方法 (推荐使用*通配符的这种)
第一种,struts2里面有常量直接启用就好了,
配置好之后再访问的时候,只需要在原来的访问地址后面加上!方法名
eg:http://localhost:8080/Struts/DemoAction!delete
配置代码如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!--配置动态方法调用是否开启常量
默认是关闭的
http://localhost:8080/Struts/DemoAction!delete
-->
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<package name="hello" namespace="/" extends="struts-default">
<action name="DemoAction" class="test.DemoAction">
<result name="add" >/add.jsp</result>
<result name="delete" >/delete.jsp</result>
<result name="update" >/update.jsp</result>
<result name="find" >/find.jsp</result>
</action>
</package>
</struts>
action代码如下
package test;
public class DemoAction{
public String add(){
return "add";
}
public String delete(){
return "delete";
}
public String update(){
return "update";
}
public String find(){
return "find";
}
}
第二种方法,通配符匹配
eg:http://localhost:8080/Struts/DemoAction_add (你的action name怎么写的地址就怎么写,只是把*换成你的方法名就好了)
配置如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="hello" namespace="/" extends="struts-default">
<!--
动态方法调用:通配符方式
使用{1} 取出第一个星号通配的内容
http://localhost:8080/Struts/DemoAction_add
-->
<action name="DemoAction_*" class="test.DemoAction" method="{1}">
<result name="add" >/add.jsp</result>
<result name="delete" >/delete.jsp</result>
<result name="update" >/update.jsp</result>
<result name="find" >/find.jsp</result>
</action>
</package>
</struts>
代码全部亲测有效
下面给一张eclipse的图