Struts2 Tips

1.如果action中使用了validate方法并且同时配置了xml文件校验框架,则会先从校验框架判断输入错误,然后转入validate方法中去继续执行直到该方法return、方法执行结束、遇到执行fieldError()或actionError()这三种情况,因此两边的错误信息都会显示出来。因此不推荐同时使用这两种校验方式,此外对于validate方法中如果出现actionError或fieldError则返回INPUT的result视图,但是在execute或其它action method方法中,则不会返回,而是会继续执行直到抛出异常或方法执行结束、以及遇到显示的return值。

2.struts配置文件搜索顺序

struts.xml

struts-plugin-xml

struts.properties

web.xml

3.action配置节点默认值

name无默认值,必须定义

class:com.opensymphony.xwork2.ActionSupport

method:execute

result:success

因此若忽略class、method及result.name的配置,即使用默认,将直接转向result目标地址

4.struts标签中使用el表达式抛出的异常

According to TLD or attribute directive in tag file, attribute value does not accept any expressions

参见:Struts 2不再支持在struts tag里使用JSP EL表达式、有关Struts2的标签不支持<%%>和$(EL表达式的符号)的问题

在struts2的2.0.11及以上版本的changelog里,官方已经说了不再支持EL表达式,官方说的是因为安全问题,这个在 JE上已经有所讨论了。 也不支持JSP标签:'<%%>'。

5.当struts2 action不继承任何类时(ActionSupport或Action),只有该'action'提供了标准的execute方法才能被配置到struts.xml中并发挥作用。

public String execute() {
    return "success";
}

但是在该类中仍可以使用ActionContext的方法取得servlet容器中的request及session等对象。

6.struts校验框架对指定方法进行校验时,校验文件的名字是:ActionClassName-ActionMappingName-validation.xml

即,action简单类名-访问action的路径名(就是在struts.xml中配置的action节点中的name属性)-validation.xml.

参见:struts2验证框架中在action中定义多个方法的问题

<action name="user_add" class="com.UserAction" method="add"> 
    <result name="input">111.jsp</result> 
    <result name="success">222.jsp</result> 
</action> 
我们在配置文件中指定了method其实和验证没什么关系,比如我们指定method="add" 然后我们验证文件配置成UserAction-add-validation.xml。这样struts验证是不会成功的。 因为验证跟本就跟method指定的方法无关,而是和name指定的名字有关, 如果我们的配置文件这样命名:UserAction-user_add-validation.xml 那么你才能验证成功

7.要使action类自动执行validate放发必须实现com.opensymphony.xwork2.Validateable接口,该接口只有一个方法:public void validate();如果已经继承了ActionSupport类(该类实现了Validateable接口),则无需再实现Validateable接口,当action执行的时候将在调用execute方法(或其他自定义方法)之前自动执行validate方法已实现一些前置校验功能。

参考:利用Validateable接口实现编程验证、struts2 数据校验 ( Validateable,validation ) (1)

附:附上一些从传智播客Struts_2.1.8中截取的图片

  1. 搭建Struts2开发环境——Struts2在Web中的启动配置
  2. Action名称的搜索顺序
  3. Action中各种result转发类型


Struts2 Tips_第1张图片 

Struts2 Tips_第2张图片

Struts2 Tips_第3张图片

Struts2 Tips_第4张图片

Struts2 Tips_第5张图片

Struts2 Tips_第6张图片

Struts2 Tips_第7张图片

Struts2 Tips_第8张图片

Struts2 Tips_第9张图片

Struts2 Tips_第10张图片

Struts2 Tips_第11张图片

Struts2 Tips_第12张图片

Struts2 Tips_第13张图片

Struts2 Tips_第14张图片

Struts2 Tips_第15张图片


你可能感兴趣的:(struts2)