当前位置: 代码迷 >> Web前端 >> Struts2 诸多配置文件小结
  详细解决方案

Struts2 诸多配置文件小结

热度:118   发布时间:2012-11-25 11:44:31.0
Struts2 诸多配置文件总结

一、struts.xml 核心配置文件,配置Action

?

二、struts.properties 配置struts 常量,比如配置国际化资源位置 struts.custom.i18n.resource = i18n.message

?

?

国际化:

① 全局国际化资源文件: message_en.properties? message_zh_CN.properties

?

② java类所在的包国际化资源文件:package_en.properties? package_zh_CN.properties

?

③ 类资源文件:actionName_en.properties? actionName_zh_CN.properties

?

④ 临时资源文件 temp_en.properties? temp_zh_CN.properties?,其中temp即资源文件的前缀,可自由命名。用法:

??? <s:i18n name="temp">

????????? <s:text name="key"/>

??? </s:18n/>

?

?

类型转换

全局类型资源文件 xwork-conversion.properties 配置全局类型转换对象,格式如下:

??? 类全路径 = 类型转换器全路径

??? 例如:?? com.test.model.User=

????com.test.converter.UserDataTypeConverter

?

??? 转换错误时覆盖struts默认错误提示信息需要在全局国际化资源文件中覆盖xwork.default.invalid.fieldvalue??类型转换错误(可自由定义),如果需要设置特殊字段的转换错误提示,则需要第二步

?

② 在Action所在的文件夹中添加 actionName.properties,设置特殊提示信息需要此种格式:

invalid.fieldvalue.user(Action属性名),其中invalid.fieldvalue 固定不变

?

③ 在Action所在的文件夹中添加Action的类型转换资源文件action-conversion.properties , 转换格式如下?

??? 属性名=转换器类路径,

??? 例如? user= com.test.converter.UserDataTypeConverter

?

?

??? 对于集合类型的,根据集合类型进行转换

??? 1、List 如果指定集合中存放元素类型,则不需要在action-conversion.properties 中指定;否则,需要按照此格式

???????? Element_属性名 = 对象类路径。

???????? 例如:Element_user = com.test.model.User?

????????????????? user= com.test.converter.UserDataTypeConverter

???

??? 2、Map 如果指定集合中存放元素类型,则不需要在action-conversion.properties 中指定;否则,需要按照此格式

???????? Key_属性名 = 对象类路径? 和?Element_属性名 = 对象类路径。

???? ??? 例如:Key_user = java.lang.String?

????????????????? Element_user = com.test.model.User

????????????????? user= com.test.converter.UserDataTypeConverter

?

?????3、Set? 如果指定集合中存放元素类型,则需要在action-conversion.properties 中指定

?

??????????KeyProperty_属性名 =? 元素属性名

????????? 例如:KeyProperty_user = username

???????????????????user= com.test.converter.UserDataTypeConverter

?

?

??????? ?否则,需要按照此格式:

???????? KeyProperty_属性名 =? 元素属性名? 和?Element_属性名 = 对象类路径

???? ??? 例如:KeyProperty_user = username

??????????????????Element_user = com.test.model.User

??????????????????user= com.test.converter.UserDataTypeConverter

?

?

?输入校验

?在Action所在的文件夹中添加验证器actionName-validator.xml,如果当前Action有多个业务处理逻辑,并且输入验证不一样,则首先要在struts.xml中定义各业务逻辑处理方法,例如

??????????

???????<action name="logic" class="com.test.web.UserAction">

??????????????????? <result>....</result>

?????? <action>

   <action name="logic1" class="com.test.web.UserAction" method="login">

??????????????????? <result>....</result>

?????? <action>  

??????

   <action name="logic2" class="com.test.web.UserAction" method="register">

??????????????????? <result>....</result>

?????? <action>?

?然后需要在UserAction类所在文件夹添加UserAction-validator.xml

?UserAction-logic1-validator.xml 和 UserAction-logic2-validator.xml三个文件才能实现三个业务逻辑的处理。

创建验证器文件的文件名格式如下:

ActionName-AliasName-validator.xml,其中aliasName 就是在struts.xml中定义的Action的name属性中设置的名称。

?

如果UserAction 继承 BaseUserAction?,同时BaseUserAction?已经有了BaseUserAction-validator.xml,则UseAction会继承BaseUserAction中的校验规则。如果UserAction 中定义了UserAction-method1-validator.xml和UserAction-method2.validator.xml,则系统查找验证器时的顺序为:

?

BaseUserAction-validator.xml

BaseUserAction-method1-validator.xml

BaseUserAction-method2-validator.xml

UserAction-validator.xml

UserAction-method1-validator.xml

UserAction-method2-validator.xml

由此看出,系统是假设父类BaseUserAction也有method1 和 method2两个对应的方法.

?

以上为自己学习总结,有不足和错误之处希望原谅和给予指正,谢谢

  相关解决方案