Struts2中的资源文件的配置
来源:互联网 发布:济南打车软件 编辑:程序博客网 时间:2024/06/06 02:27
国际化文件以及各种类型转换文件的配置以及在Application中的目录
1. 国际化的资源文件的配置
文件命名:ActionName_语言代号_国家代号.properties
例如:LoginAction_zh_CN.properties(中文), LoginAction_en_US.properties(英文)
A) 资源文件的编写:
文件内容可以如下:(LoginAction_zh_CN.properties)
username=Username:
password=Password:
birthday=Birthday:
graduation=Graduation:
taste=Taste:
inputUsername=Please Input Your Username:
inputpassword=Please Input Your Password:
inputrepassword=Please Input Your Password Again:
inputbirthday=Please Input Your Birthday:
inputtaste=Please Your Taste:
submit=submit
usernameerror=Username Error.
passworderror=Password Error.
birthdayerror=the birthday must be not null.
notsamepassword=Two Password is not same.
xwork.default.invalid.fieldvalue={0}filed error!!!
需要对其中的非西欧编码进行转换成Unicode编码(使用Java中的native2acsii命令)
LoginAction_en_CN.properties
username=/u7528/u6237/u540d:
password=/u5bc6/u7801:
birthday=/u
graduation=/u6bd5/u4e
taste=/u7231/u597d:
inputUsername=/u8bf7/u
inputpassword=/u8bf7/u
inputrepassword=/u8bf7/u91cd/u65b0/u
inputbirthday=/u8bf7/u
inputtaste=/u8bf7/u
submit=/u767b/u
usernameerror=/u7528/u6237/u540d/u9519/u8bef.
passworderror=/u5bc6/u7801/u9519/u8bef.
birthdayerror=/u7528/u6237/u
notsamepassword=/u7528/u6237/u540d/u
xwork.default.invalid.fieldvalue={0}/u5b57/u6bb5/u
上述资源文件都应该放在/WEB-INF/classes文件夹下
B)配置国际化资源文件时,还应该在配置常量,以使struts2可以加载它
1) 在struts.xml中配置(建议这样做)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="resourceMessage"/>
<package name="loginproject1" extends="struts-default">
<action name="login" class="com.tyy.action.LoginAction">
<result name="success">/showResult.jsp</result>
<result name="error">/error.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
</struts>
此时,<constant />标签必须在<struts />根标记下,在<package/>标签之外
2) 在struts.properties中配置(文件放在/WEB-INF/classes下,与资源文件放在同一目录下)
可以有如下代码
struts.custom.i18n.resources= resourceMessage
文件中只有key=value值对
2) 还可在web.xml中配置,不建议这样做,代码不可读,内容可以如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<init-param>
<param-name>struts.custom.i18n.resources</param-name>
<param-value>resourceMessage</param-value>
</init-param>
</fitler>
注意:struts.custom.i18n.resources是固定的,而resourceMessage则是可以变化的,
代表这资源文件的baseName,例如上面的资源文件名分别为resourceMessage_zh_CN
和resourceMessage_en_US
注:国际化资源文件的配置必须要进行常数的配置,即在struts.xml中配置<constant />
2. 类型转换的资源文件的配置(类型转换是基于ognl的)
a) 全局类型转换文件及其存放目录和命名
命名:xwork-conversion.properties(不可改变的)
存放目录:/WEB-INF/classes下
文件内容:需要进行类型转换的属性所属的类的全名=转换类的全名
例如:com.tyy.bean.Point=com.tyy.converter.PointConverter
com.tyy.bean.Point是需要转换的属性所属的类
com.tyy.converter.PointConverter实现转换功能的类
b)局部类型转换文件
命名:ActionName-conversion.properties 例如:LoginAction-conversion.properties
存放目录:与该Action放在同一目录下,如/WEB-INF/classes/com/tyy/action目录下
文件内容:需要进行类型转换的属性=转换类的全名
例如:point=com.tyy.converter.PointConverter
point是需要转换的属性
com.tyy.converter.PointConverter是转换类的全名
注意:在类型转换的配置文件中,并不需要指定常数的配置,即并不要<constant />等配置文件
下面给出一个com.tyy.actionLoginAction.java的Action类,代码如下:
public class LoginAction {
private Point point; //需要进行转换的类
public void setPoint(Point point) {
this.point = point;
}
public String execute() throws Exception {
}
public Point getPoint() {
return point;
}
}
类型转换类com.tyy.converter.LoginConverter.java的框架如下:
public class LoginConverter extends StrutsTypeConverter {
public Object convertFromString(Map context, String[] values, Class toType);
public String convertToString(Map context, Object o);
}
其中StrutsTypeConverter是一个抽象类,有两个方法没有实现,
并且继承之DefaultTypeConverter(输入ognl包)
3. 改变默认类型转换错误信息的配置
a) 全局配置
针对所有的属性采取同样的出错提示信息
可以在国际资源化文件中添加如下代码
xwork.default.invalid.fieldvalue={0}filederror!!!
注:此时必须要在国际化资源文件中进行设置,并在struts.xml中配置<constant />,
否则也不好将此信息存放在那个文件里面。
其中xwork.default.invalid.fieldvalue是不可变的,后面的是转换出错而自动
抛出的信息,其信息是存放在fieldValue中的。出错后会转到input所对应的视图,
在该视图中可以通过<s:fielderror />来得到错误信息。如果是返回到类似与login.jsp,
并且是使用ognl标签的话,则不需要做任何处理,也会打印出错误信息,ognl表单标签
已经在内部实现了输出fielderror中信息的功能。
注:不管转换是否出错,如果有validate()方法或validateXxx()方法,都会进入此方法进行验证。如果检测到
Fielderror字段不为空,则跳转到input所对应的视图,否则进入execute()或xxx()方法。
b) 局部配置
如果某个属性需要对其出错的时候,提供特殊的提示信息,则需要配置局部文件
创建局部国际化资源文件(也可以通过创建普通的properties文件,不过不可以实现国际化)
命名:ActionName_编码代号_国家代号.properties 例如:LoginAction_zh_CN.properties
也可以命名为LoginAction.properties
存放路径:/WEB-INF/classes/com/tyy/action/目录下
文件内容:
invalid.fieldvalue.需要针对某个需要单独显示出错提示信息的属性,
例如:需要对birthday字段进行特殊的显示
Invalid.field.birthday=信息字段不能无效,并且需要满足中国人的阅读习惯
在前面的全局配置中所有的字段如果出错都会提示“该字段error”,如果birthday字段出错则会提示
“信息字段不能无效,并且需要满足中国人的阅读习惯”,局部配置会覆盖之前的全局配置。
注:1)如果所配置的局部资源化文件只有一种,也即只有LoginAction_zh_CN.properties或只有LoginAction_en_US.properties,
(此时也可直接设置为ActionName.properties)
则不管在什么样的语言环境下,都会读取存在那个资源文件的内容,而不管它是否符合自己的国际化特性
2) 不需要在对局部配置其配置其他内容,只需将文件放到上面的目录下,struts2会自动搜索该文件
而全局则必须要配置在struts.xml中配置<constant name=”struts.custom.i18n.resources” value=”resourceMessage”/>
4. 校验过程中出现的出错
通常在服务器端进行校验的时候验证不成功,则也会将失败信息填入到fielderror中,此时并不能够覆盖掉
类型转换过程中的错误信息。
public voidvalidate() {
if(age == 0) {
this.addFieldError(“age”, “agefield is not null”);
}
}
验证失败转入到input视图,可以通过<s:fielderror />获得fielderror中的内容
上面讲述的错误信息都是fielderror级别的,同时也存在一种actionerror的错误信息。
在ActionSupport中父接口中有一种addActionError(Stringname);该方法用来将错误信息添加到
ActionError中,在input所转向的页面中可以通过<s:actionerror />来输出错误信息。具体内容可以
参见ognl的相关文档。
总结:只有国际化资源文件需要配置常量支持;类型转换并不需要,其在出现类型转换错误的时候会被拦截器拦截,
并进行相应的操作,将其放到fielderror中,其中的具体信息,可参考其源代码,一适当的了解底层信息。
附录:(一个MyEclipse项目的简单结构)
- Struts2中的资源文件的配置
- 关于Struts2资源文件的配置
- Struts1.2中的资源文件的配置
- struts2配置包范围的国际化资源文件
- struts2配置Action范围的国际化资源文件
- struts2国际化资源的配置
- Struts2项目中的web.xml文件的配置问题入门
- struts2里资源国际化的配置
- struts2中加载资源文件的顺序
- struts2的国际资源化文件
- Struts2的国际化、配置全局资源与输出国际化信息、国际化—JSP中直接访问某个资源文件
- struts2中的数据校验文件配置
- struts2中的数据校验文件配置
- struts2中的数据校验文件配置方法
- Maven 资源文件的配置
- Struts2简单配置国际化资源文件及用法
- 复习struts2之配置action范围国际化资源文件
- struts2配置国际化全局资源文件 并 输出国际化信息
- 网上很多Rose2003的破解方式都无效,下面是几经尝试发现的方法。
- Linux下JNI参数中文字符串的处理
- 想考MCSE CCNA的朋友进来拿一份。。。
- Matlab的函数及指令一览表
- Java注解(Tiger)
- Struts2中的资源文件的配置
- 多对一单向关联映射
- [VB.NET]DadaGridView操作
- [VB.NET]ADO数据库处理-执行SQL代码
- Linux设备驱动程序设计实例
- 基于wxWidgets的JSMin工具
- [VB.NET]ADO数据库处理-把记录装入DataGrilView
- asp.net页面回传与js调用服务端事件、PostBack的原理详解
- 小佳弱弱学习——unix环境高级编程(一)