在struts2中,action有个默认方法execute,也就是说,如果,在jsp访问某数据资源,通过url地址,在struts.xml文件中找到对应的action类,就会默认执行该action中的execute方法,那如果这样的话,岂不是一条业务逻辑就要建立action?
真的是这样吗?答案当然不是的,在action中可以写多个方法,但我们应该怎么调用呢?
下面就让我来一一为大家揭晓......
具体的调用方式:
1·* 方法的动态调用
2·*在<action>中配置method属性
3·* 使用通配符
1·方法的动态调用方式:
action名称+!+方法名称+后缀
<ahref="user!add.action">添加用户</a><br>
<ahref="user!del.action">删除用户</a><br>
<ahref="user!update.action">修改用户</a><br>
<ahref="user!list.action">查询用户</a><br>
2·在<action>中配置method属性
<!--配置首页访问的action -->
<action name="index" class="indexAction" method="addUser">
<resultname="index">/WEB-INF/jsp/index.jsp</result>
</action>
3·使用通配符
具体配置
<!--method="{1}" 表示:*是什么,这就是什么方法;如果调用addUser的action,则method就为add方法。-->
<actionname="*User" class="com.bjpowernode.struts2.UserAction"method="{1}">
<result>/{1}Success.jsp</result>
</action>
注意:在Struts2的<action>标签class、name、method和result标签上都可以使用通配符
通配符的作用就是为了减少配置量,通配符需要建立在约定的基础上
其中需要注意两点:
1·动态调用参数配置,默认为true,可以调用,否则不能调用
<constantname="struts.enable.DynamicMethodInvocation"value="false"/>
2·Action中的所有方法必须和execute方法一致(参数,返回值,异常最好也一样)