码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-13 22:02:04      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:struts2访问国际化消息的方式   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>就是指定消息资源文件。

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

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

原文地址:http://blog.csdn.net/qq_20545159/article/details/45696799

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!