(1).支持使用POJO来做Action.(不推荐使用)
优点:和Struts2解除耦合.
缺点:
<action/>元素配置,method属性默认值就是execute.
但是写不对该方法,编译不报错.
Action的请求方法中,最终得返回一个逻辑视图名(String类型).
会造成不同Action编写者的随意性.
为了解决上述问题,Apache 定义了编写Action的规范:形式2:
public class Action{
public static final String SUCCESS = "success";
public static final String NONE = "none";
public static final String ERROR = "error";
public static final String INPUT = "input";
public static final String LOGIN = "login";
public String execute() throws Exception;
}
public class LoginAction implements Action{
public String execute() throws Exception{
return SUCCESS;
}
}
(3).上述解决方案不错哦,但是,不支持数据校验,文本信息设置,国际化等功能.
所以开发中: 定义一个了继承于com.opensymphony.xwork2.ActionSupport类
public class LoginAction extends ActionSupport{
public String execute() throws Exception{
return SUCCESS;
}
}
2.Action中多方法的调用:
1.动态方法调用:DMI
请求的时候: actionName !方法名 指定调用Action哪个方法
默认情况下DMI是关闭的.要使用先配置支持动态方法调用的常量:
<!-- 支持动态方法调用 ,这个value的值要设置为true-->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
例如:struts.xml没有指定method属性但是product!add.action 就会执行ProductAction的add方法
官方是不推荐使用. 默认是关闭(false)的
2.通配符形式访问:*
在class、method属性及<result>子元素中通过 {N} 形式代表前面地N个* 匹配子串
*_*代表匹配两个字符串
{1} 匹配UserAction 用于执行class
{2} 匹配login用于指定method执行方法 和结果页面
总结:
使用通配符
*: 0到N个字符
{1}:表示第一个*的值.
{2}:表示第二个*的值.