Struts2
1, Action中自定义方法的输入校验,对于通过action的method属性所指定的自定义方法,其对应的自定义输入校验方法名是validateMyExecute(假设自定义方法名是myExecute)底层是通过反射实现的。
2, 当在Action中指定了自定义的execute方法时,首先会执行自定义的execute方法对应的输入校验方法,然后再去执行validate方法,执行完毕后如果出现了任何错误都不会再去执行自定义的execute方法,流程转到input这个名字对应的页面上。
3, 自定义Field级别的错误提示消息
1) 新建一个以Action命名的properties文件,如RegisterAction.properties
2) 在该属性文件中指定每一个出错字段的错误消息
invalid.fieldvalue.birthday=birthday invalid!
3) 将.properties文件切换到Properties视图中,可以编辑成中文信息,myeclipse会将中文信息转换成unicode编码的形式
也可以使用jdk提供的工具在命令行中输入中文,将转换的unicode编码复制到代码或者.properties中,就不会出现中文乱码问题了。
4, Struts2的校验框架(有效的xml文件),跟action在同一个包下面,命名规则如RegisterAction-validation.xml,具体来说分为字段优先校验器与校验器优先校验器。
5,它的dtd文件,我们可以在xwork-core-2.3.4.jar/xwork-validator-1.0.2.dtd中看到它的整个定义。
<!-- 这个dtd文件到struts-2.3.4\apps某个应用下去拷贝就行了 -->
<!DOCTYPEvalidatorsPUBLIC
"-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
6, 校验类型可取的值:
xwork-core-2.3.4.jar/com.opensymphony.xwork2.validator.validators/default.xml中定义了校验类型以及对应的校验类。
7, 额外信息(param可取的值),到对应的类中找属性,注意要与set方法保持一致的。
校验框架的message信息会放到fielderror中
8, message的可选属性key是用在国际化中的。国际化属性文件放在与action在同一包下,package_en_US.properties(英文),package_zh_CN.properties(中文)。
9, 对于国际化资源文件,其命名规则是package_语言名_国家名,比如package_en_US,package_zh_CN。国际化实现类1
10, 资源处理类ResourceBundle,专门处理语言包中的相关内容。
1) 资源文件,这里是普通的java应用,在src下建立资源文件,xxx_en_US.properties,xxx_zh_CN.properties
2) 文件内容例如:
3) 文件内容的读取
11,资源文件的内容里面,可以给等号后面的值增加参数,获得它的时候,可以动态赋值,参数是以花括号的形式{0},从0开始的
占位符的处理—消息格式化,动态控制是很有用的
11, 校验器优先的校验,以校验器为基准,为它应用字段
12, 中文的日期表示格式: 2012-7-22;英文的日期表示格式:7/22/2012
13, Struts2校验框架执行的顺序:先执行校验框架(xml);再执行自定义的校验方法(validateMyExecute)方法;再执行validate方法;当然在它们三个之前进行的是类型转换。
14, 校验框架的xml写起来有时也挺麻烦的,不够灵活,更加推荐的是validate方法中的代码进行校验。Validate方法一般进行的是没有业务逻辑的验证。
15, 异常处理
1) 自定义异常
2) 抛自定义异常
3) 异常的处理
异常处理的时候,先找局部,局部没有的话,才找全局的
局部
全局
16,我们既可以在Action中定义异常与结果,也可以定义全局的异常与结果,局部总是优先于全局,如果定义成全局,那么可以为所有Action所共用,而局部异常与结果只能被当前Action所独享,不能为其它Action所共享。