struts2访问国际化消息的四种方式

     Struts2的国际化是建立在java国际化的基础之上的,因此具有强大的国际互能力。Struts2运行时自动检测当前的
Location,然后使用RsourceBundle加载对应的Locale资源文件。因为Struts2对java的国际化进行了封装,因此国际化起来更简单,用户一般提供不同国家的消息资源即可。在Struts2的国际化包含三个部分:前台的国际化,Action中的国际化,验证配置文件的国际化。
    
    在Struts2中加载全局资源文件
    国际化的前提是如何让Struts2能够加载到国际化消息资源文件。加载国际化消息资源文件的方式有两种。
    1.在src目录下创建一个struts.propertied文件,服务器启动时会自动加载该文件。在这个文件中写入
struts.custom.i18n.resources=globalResourceMessages,服务器会自动加载前缀为globalResourceMessages的资源文件。
    2.或者在struts.xml文件中添加<constant name="strtus.custom.i18n.resources" value="globalResourceMessages">
    </constant>服务器会自动加载前缀为globalResourceMessages的资源文件。如下所示:
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
    <struts>
    <constant name="strtus.custom.i18n.resources" value="globalResourceMessages">
      <package name="struts2resource" extends="struts-default">
 ... 
</package> 
    </struts>   


Struts2访问国际化消息
访问国际化消息资源文件时Struts2国际化的重要组成部分,在struts2中访问国际化消息主要有以下四种方式:
(1)JSP页面:<s:text name="key">,如下:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title><s:text name="title"></s:text></title>
  </head>
  <body>
    //输出国际化消息中的内容
    <s:text name="content"></s:text>
    <s:form action="resourceaction">
    <s:textfield name="user" key="user"></s:textfield>
    <s:password name="pass" key="pass"></s:password>
    <s:submit key="submit"></s:submit>
    </s:form>
  </body>
</html>
在src目录下的struts.properties文件的内容:
struts.custom.i18n.resources=globalResourceMessages


globalResourceMessages_zh_CN.properties文件的内容
title=\u8BBF\u95EE\u6D88\u606F\u6587\u4EF6
content=\u8FD9\u662F\u4E2D\u6587\u9875\u9762
user=\u7528\u6237
pass=\u5BC6\u7801
string.null=\u7528\u6237\u4E0D\u80FD\u4E3A\u7A7A
submit=\u767B\u5F55
welcome={0},\u6B22\u8FCE\u4F60{1}
上面的<s:text name="content"></s:text>将会输出content=\u8FD9\u662F\u4E2D\u6587\u9875\u9762,也就是这是中文页面。


globalResourceMessages_en_US.properties文件的内容:
title=Access information
content=This is English 
user=User
pass=Pass
string.null=user not null\!
submit=Submit
welcome={0},welcome to {1}


(2)Action类中:使用ActionSupport类的getText方法.
下面的这个Action对前面提交过来的数据的处理,
package action;


import com.opensymphony.xwork2.ActionSupport;
public class ResourceAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String user;
@Override
public String execute() throws Exception {
       //输出资源文件中content的值
System.out.println(getText("content"));
//以下在ACtion中输出带占位符的国际化消息
String s[] ={getUser(),"理央silence!"};
String msg = getText("welcome",s);
System.out.print(msg);
return super.execute();
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
}
其中,String msg = getText("welcome",s)是调用getText(String aTextNmae,List args)或getText(String key,String[] args)方法来田中占位符。



(3)表单元素:在标签中指定一个key
在第一个使用JSP页面时就已经使用了该表单元素<s:submit key="submit"></s:submit>




(4)验证文件(XXX-validation.xml):在<message>中指定一个key:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="user">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message key="string.null"></message>
</field-validator>
</field>
</validators>


其中<message key="string.null"></message>就是指定消息资源文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值