一、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两个对应的方法. ? 以上为自己学习总结,有不足和错误之处希望原谅和给予指正,谢谢