Action是Struts 2的核心类,实现了对用户请求信息的处理,Action是业务逻辑控制器。
Action类中的属性名,与(jsp页面中的)form表单各标签的name属性要一一对应,区分大小写。
动态访问调用
实际应用中,存在一个Action处理多个业务的情况,则每个Action会包含多个处理业务逻辑的方法,根据客户端的不同请求,决定调用不同方法。
1. 感叹号方式(可用)
此时,struts.xml中需要配置常量:
<constantname="struts.enable.DynamicMethodInvocation" value="true"/>
如:一个form表单有多个提交按钮,不同按钮对应Action中不同方法,即动态调用。
格式为:
<s:form action=”actionName!要调用的方法名字”>或
<s:form action=”actionName!要调用的方法名字.action”>
此时,struts.xml中只需配置一个action,而不必配置各个方法:
<action name=”actionName”class=”包名.Action类名”>
<result name=”xxx”>视图URL</result>
</action>
2. method属性(不方便使用)
action元素除了name和class属性外,还有method属性,用于指定要执行的Action方法。格式:
<action name=”actionName” class=”包名.Action类名” method=”方法名称”>
<result name=”xxx”>视图URL</result>
</action>
/*注意No configuration found for the specified action问题
这个问题的解决需要struts.xml里配置的namespace与form表单中的namespace一致。
另外,不要在action的name后加.action
*/
3. 通配符
<action name=”msg_*” class=”包名.action类名” method=”{1}”>
<result>/success.jsp</result>
<result name=”xxx”>{1}.jsp</result>
</action>
4. 默认配置
当用户请求找不到对应的action元素值时,系统将调用默认Action来接收用户请求信息。
struts.xml中,<package>标签下有<default-action-ref>用于配置默认Action。