Log4X

链路纵横
[搬家文]struts2主要的配置文件提要[2]

struts.properties       放在src      可免,通过struts.xml里面的constant元素配置

l 一些常用的属性:

struts.custom.properties :用户自定义属性文件,多个用逗号隔开

struts.devMode:是否处于开发模式,开发阶段可设true。

struts.i18n.reload:每次请求到达重新加载资源文件,开发阶段设true。

struts.ui.theme: 默认视图主题,默认为xhtml

struts.configuration.xml.reload :指定struts.xml改变后自动重新加载。默认false。

struts.custom.i18n.resources:指定struts2国际化资源文件。

struts.configuration.files:指定struts2默认加载的配置文件,该属性默认值为struts-default.xml,struts-plugin.xml,struts.xml

 

messageResource_language_COUNTRY.properties action同目录 本地化信息配置文件

 

XXXAcion-conversion.properties     action同目录   局部类型转换器配置

         aaaa(action中的属性名) = package.xxxconverter

        

xwork-conversion.properties     src文件夹下      全局类型转换器配置

         ttt(类型) = package.xxxConvertor

         Element_xxx=xxxType 对于没有泛型支持的list,collection

 

actionname-validation.xml   action同目录    action对应的验证配置,actionname action的类名

xwork-validation.xml         放在src           全局验证

关于验证有一点需留意,默认拦截器栈, conversionError拦截器配置都在validation拦截器之前。所以,在进行验证之前,conversionError拦截器会先调用转换器对页面上的属性进行转换,若转换器中抛出错误,会通过conversionError拦截器直接把错误信息返回页面,所以也不会经过validation了。这样一来,validation配置里面的友好的提示信息就换成了异常里面编程人员才看得懂的message了,对于用户而言不太好。

实际上validation拦截器所做的是服务器端验证,它只对action里面的属性定义的类型起作用,比如在action中某属性attrib1是 int型的,那么像正则表达式之类针对string的验证器就不会起作用,这和客户端验证不同之处在于,客户端验证把所有类型的输入都看作string.

 

所以,页面输入的验证,现在可以有3道。

l 第一道是仍然基于javascript的客户端验证

这一道其实也可以通过转换器来识别,转换器最先读入时,仍然是String型,因此可以在转换过程中对格式进行验证。

l 第二道是转换器转换时的验证(其实是抛出转换异常,也可以当作输入格式上的验证)

这一道,默认的输出message比较不友好,不过可以通过在messageResource资源文件中配置这两个键值加入自己的信息:

1.       Xwork.default.invalid.fieldvalue   默认类型转换失败信息

2.       Xwork.fieldvalue.属性名 指定属性名的类型转换失败信息。

l 第三道是validation配置文件配置的服务器端验证。

这些验证类型名可以通过看xwork-x-x.jar中com.opensymphony.xwork2.validator.validators包内的default.xml看到

还是得强调下,服务器端验证主要关注的不是参数的格式,而是参数的实际内容,服务器端验证格式反而很不方便。

 

posted on 2008-08-13 20:06  YYX  阅读(573)  评论(0编辑  收藏  举报