ActionSupport

继承com.opensymphony.xwork2.ActionSupport会使写Action更方便,需要引入commons-logging-1.0.4.jar继承后会出现常量:
SUCCESS=“success”
NONE=“none”
ERROR=“error”
INPUT=“input”
LOGIN=“login”

继承父类的Action,父类属性不能被返回

例如:我们发现几个Action都是要返回一个叫做code的状态码到前台,那么为了提高代码复用,我们可以把code抽取到父类,并把Struts需要的setter、getter方法写好,子类继承它即都拥有了code属性。但是此时需注意,配置文件Struts.xml:

1
2
3
<result name="success" type="json">
<param name="code">code</param>
</result>

在Struts中默认只会返回子类的code属性,并且测试发现也不能被Struts自动封装为json,返回到前台的不是json数据,而是code的值。那么我们如何让返回中含有父类的code属性呢,我们可以使用:

1
2
3
4
<result name="success" type="json">
<param name="ignoreHierarchy">false</param>
<param name="code">code</param>
</result>

表示父类子类属性一起返回,这时前台才会出现json数据。

自定义方法尽量不以get、set开头

对于action里面的自定义方法命名,不能有形如setA***()、getB**()。因为前台传入参数到action时,Struts会调用相同参数名的action内中的属性的set方法进行赋值;而反馈到前台时,会调用get方法获取到前台。如果你的方法中有如getMyUser(){}的方法存在,那么在前台,你会看到有一个myUser的东西被发送到了前台,即使你的action中没有myUser属性。

Action的属性不应是static

对于属性的get方法或者set方法,都不能设置为static,否则无法赋值或取值。