1. validate() 输入校验,一般是先validate()再execute().
2. this.addActionError(); this.addFieldError();
1)如果你想显示总体信息,那么actionError是一个好选择,因为对总体信息来说,不需要过细的划分;
2)但是如果你的信息要进行细致的划分,比如你在后台进行数据再次验证,对于传入的字段如果格式不符,对应生成相应的错误信息,那么这时候就要用filedError了。
3. getActionError()先创建一个ArrayList集合的副本,副本中有指向错误的引用,即使clear()清除,原来的集合里面的错误没有受到影响.也就是说Action级别的错误对开发人员来说仅仅是可以读的.
4. FieldError级别的错误信息底层是用LinkedHashMap实现的,该Map的key对应FieldErrorName 是String类型的,value是List<String>类型的,这就表示一个FieldErrorName可以对应多个错误信息,这行信息放在List<String>集合里面.
5. 执行流程:
如果类型转换和输入校验中任何一个过程出现错误,那么久不执行execute()方法,直接执行action为input的页面.但是如果你在validate()方法结尾使用clearActionErrors()和clearFieldErrors()那么依然可以去执行execute()方法,以为这次是把错误的信息给删除了,就相当于没有错误了.
6. 对于action里面存在自定义的method属性,其对应的validate方法的名字必须是以Validate开头,后面接以自定义的method的方法名称,而且还必须大写的,如:
1) method:privateString myExecute(){……..};
2) 那么验证方法为public void ValidateMyExecute(){……….}
3) 注意大小写
4) 先执行自定义的验证方法: ValidateMyExecute(),再执行默认的验证方法:validate()
5) 任何验证方法出现错误,execute方法都不会再执行了,直接去执行reslult为input的页面
7. 自定义的Field级别的错误的提示信息,使用Struts2自带的不好,应该自己处理
1) 新建一个以Action命名的properties的文件,如:UserAction.properties
2) 在属性文件里面给相应的可能出现错误的字段写好提示信息,如:Invalid.fieldvalue.nuername=the name is error!
3) Invalid.fieldvalue是固定不变,仅仅后面的字段是可以改变的.
4) 相应字段如果需要使用中文,不可以自己写入,可以在design视图里面写入,再在sources视图里面看相对应的uncode编码.
8. 全局的类型转换:可以定义一个xwork-conversion.properties,但是要注意位置.
9. Struts2 的校验框架(有效的xml的文件).具体来说分为字段优先校验器和校验器优先校验器.
10. 对于国际化的资源文件,命名规则是:package_语言名_国家名,如:
Package_zh-CN
11. Struts2 框架检验器执行的先后顺序:
1) 首先执行校验框架(xml文件)
2) 执行自定义的方法的校验方法
3) 执行validate方法
12. 在Action里面可以定义异常和结果,也可以定义全局的异常和结果,而且局部总是优于全局.