struts2:国际化
2012-06-05 13:13
162 查看
国际化
一,全局的国际化资源文件
1,资源文件:资源文件放在src下面,命名为 “基名_language_country.properties”
如:hwt_zh_CN.properties
2,在struts.xml中配置基名(以上面的配置文件为例):<constant
name="struts.custom.i18n.resources"value="hwt"/>
3,页面中的引用:直接写<s:text name=”key名字”/>,会直接到全局的配置文件中去找
4,错误信息的国际话:在Action中可以通过 getText(“key的名字”);可以得到资源文件中的值,如:
public
void validate() {
if(username ==
null ||
"".equals(username)){
this.addFieldError("username",
getText("errors.username"));
}else
if(tel == null ||
"".equals(tel)){
this.addFieldError("tel",
getText("errors.tel"));
}else
if(!Pattern.compile("^1[358]\\d{9}$").matcher(tel).matches()){
this.addFieldError("tel",
getText("errors.telFormat"));
}
}
如果使用的是validate,那么就使用<messagekey=”key名字”/>来取得资源文件中的值
<field
name="username">
<field-validator
type="requiredstring">
<message
key="errors.username">
</message>
</field-validator>
</field>
二,package下的国际资源文件
1,资源文件:资源文件放在相应的包下面,命名为 “package_language_country.properties”,package是固定的:如:package_zh_CN.properties
2,在页面包的资源文件访问:
<s:i18n
name="hwt/action/package">--注意:前面是包名,后面的package是固定的
<s:text
name="prompt.username"></s:text>
</s:i18n>
3,错误信息的国际化和全局的国际化是一样的;
三,Action下的国际资源文件
1,资源文件:资源文件放在Action所在的包下面,命名为 “ActionClassName_language_country.properties”,ActionClassName是Action类名:如:LoginAction_zh_CN.properties
2,在页面包的资源文件访问:
<s:i18n
name="hwt/action/LoginAction">--注意:前面是包名,后面是类名
<s:text
name="prompt.username"></s:text>
</s:i18n>
3,错误信息的国际化和全局的国际化是一样的;
四,输出带占位符的国际化信息
如在资源文件中配置信息如下:
prompt.username=username
errors.required={0} is required !
在页面可以直接访问:
<s:text name="errors.required ">
<s:param><s:text name=”prompt.username”/></s:param>
</s:text>
在Action类中获取带占位符的国际化信息,可以使用
getText(String key, String[] args)或getText(StringaTextName, List args)方法。
如:
public
void validate() {
if(username ==
null ||
"".equals(username)){
this.addFieldError("username",
getText("errors.required",new String[]{getText("prompt.username")}));
}else
if(tel == null ||
"".equals(tel)){
this.addFieldError("tel",
getText("errors.required",new String[]{getText("prompt.tel")}));
}else
if(!Pattern.compile("^1[358]\\d{9}$").matcher(tel).matches()){
this.addFieldError("tel",
getText("errors.idcard",new String[]{getText("prompt.tel")}));
}
}
五,动态的语言切换
动态的语言切换非常容易,只需要在url地址后面就加上 request_locale=zh_CN或者request_locale=en_US….
1,建一个类
public
class ChangeLanguage extends ActionSupport{
public String execute()
throws Exception{
return
super.execute();
}
}
2,配置问中要注册上面写的那个类:
<action
name="changeLanguage"
class="hwt.action.ChangeLanguage">
<result>/login.jsp</result>
</action>
3,页面
<body>
<a
href="${pageContext.request.contextPath}/validator/changeLanguage.action
?request_locale=zh_CN">简体中文</a>
<a
href="${pageContext.request.contextPath}/validator/changeLanguage.action
?request_locale=en_US">English</a>
<form
action="${pageContext.request.contextPath }/validator/loginAction_login.action"
method="post">
<s:text
name="prompt.username"/>:<input
type="text"
name="username"
value="${username }"/><s:fielderror
fieldName="username"/><br/>
<s:text
name="prompt.tel"/>:<input
type="text"
name="tel"
value="${tel}"/><s:fielderrorfieldName="tel"/><br/>
<input
type="submit"
value="<s:text
name='button.confirm'/>"/>
</form>
</body>
一,全局的国际化资源文件
1,资源文件:资源文件放在src下面,命名为 “基名_language_country.properties”
如:hwt_zh_CN.properties
2,在struts.xml中配置基名(以上面的配置文件为例):<constant
name="struts.custom.i18n.resources"value="hwt"/>
3,页面中的引用:直接写<s:text name=”key名字”/>,会直接到全局的配置文件中去找
4,错误信息的国际话:在Action中可以通过 getText(“key的名字”);可以得到资源文件中的值,如:
public
void validate() {
if(username ==
null ||
"".equals(username)){
this.addFieldError("username",
getText("errors.username"));
}else
if(tel == null ||
"".equals(tel)){
this.addFieldError("tel",
getText("errors.tel"));
}else
if(!Pattern.compile("^1[358]\\d{9}$").matcher(tel).matches()){
this.addFieldError("tel",
getText("errors.telFormat"));
}
}
如果使用的是validate,那么就使用<messagekey=”key名字”/>来取得资源文件中的值
<field
name="username">
<field-validator
type="requiredstring">
<message
key="errors.username">
</message>
</field-validator>
</field>
二,package下的国际资源文件
1,资源文件:资源文件放在相应的包下面,命名为 “package_language_country.properties”,package是固定的:如:package_zh_CN.properties
2,在页面包的资源文件访问:
<s:i18n
name="hwt/action/package">--注意:前面是包名,后面的package是固定的
<s:text
name="prompt.username"></s:text>
</s:i18n>
3,错误信息的国际化和全局的国际化是一样的;
三,Action下的国际资源文件
1,资源文件:资源文件放在Action所在的包下面,命名为 “ActionClassName_language_country.properties”,ActionClassName是Action类名:如:LoginAction_zh_CN.properties
2,在页面包的资源文件访问:
<s:i18n
name="hwt/action/LoginAction">--注意:前面是包名,后面是类名
<s:text
name="prompt.username"></s:text>
</s:i18n>
3,错误信息的国际化和全局的国际化是一样的;
四,输出带占位符的国际化信息
如在资源文件中配置信息如下:
prompt.username=username
errors.required={0} is required !
在页面可以直接访问:
<s:text name="errors.required ">
<s:param><s:text name=”prompt.username”/></s:param>
</s:text>
在Action类中获取带占位符的国际化信息,可以使用
getText(String key, String[] args)或getText(StringaTextName, List args)方法。
如:
public
void validate() {
if(username ==
null ||
"".equals(username)){
this.addFieldError("username",
getText("errors.required",new String[]{getText("prompt.username")}));
}else
if(tel == null ||
"".equals(tel)){
this.addFieldError("tel",
getText("errors.required",new String[]{getText("prompt.tel")}));
}else
if(!Pattern.compile("^1[358]\\d{9}$").matcher(tel).matches()){
this.addFieldError("tel",
getText("errors.idcard",new String[]{getText("prompt.tel")}));
}
}
五,动态的语言切换
动态的语言切换非常容易,只需要在url地址后面就加上 request_locale=zh_CN或者request_locale=en_US….
1,建一个类
public
class ChangeLanguage extends ActionSupport{
public String execute()
throws Exception{
return
super.execute();
}
}
2,配置问中要注册上面写的那个类:
<action
name="changeLanguage"
class="hwt.action.ChangeLanguage">
<result>/login.jsp</result>
</action>
3,页面
<body>
<a
href="${pageContext.request.contextPath}/validator/changeLanguage.action
?request_locale=zh_CN">简体中文</a>
<a
href="${pageContext.request.contextPath}/validator/changeLanguage.action
?request_locale=en_US">English</a>
<form
action="${pageContext.request.contextPath }/validator/loginAction_login.action"
method="post">
<s:text
name="prompt.username"/>:<input
type="text"
name="username"
value="${username }"/><s:fielderror
fieldName="username"/><br/>
<s:text
name="prompt.tel"/>:<input
type="text"
name="tel"
value="${tel}"/><s:fielderrorfieldName="tel"/><br/>
<input
type="submit"
value="<s:text
name='button.confirm'/>"/>
</form>
</body>
相关文章推荐
- Struts2国际化——完整实例代码
- Struts2 的国际化&格式化数据
- struts2中页面语言国际化的方法
- Struts2的国际化
- 【struts2】struts2国际化
- Struts2中文国际化乱码问题
- Struts2国际化文件乱码解决
- Struts2学习之国际化机制
- Struts2实现国际化
- 06章 Struts2国际化
- Struts2 输入校验(Action中使用国际化资源文件、校验器校验)
- struts2中i18n国际化在chrome下不显示中文
- struts2——国际化、OGNL表达式语言
- 码农小汪-struts2学习6-国际化
- Struts2的国际化与上课总结
- 框架学习之struts2-02其他配置、异常框架和国际化
- struts2表单验证初步及国际化实现(学习总结)
- struts2--struts2国际化
- struts2的国际化
- SSH(二)~——Struts2国际化手动切换版