struts2的国际化分三种情况:前台页面的国际化,Action类中的国际化,配置文件的国际化。

首先指定全局的国际化资源文件:

在配置文件struts.xml中引入(注意位置)

<constant name="struts.custom.i18n.resources" value="message"></constant>

在struts.properties文件中指定如下一行:

struts.custom.i18n.resources=message

指定的国家化资源文件即为

xxx_语言_国家.properties

message_zh_CN.properties(简体中文资源文件)

message_en_US.properties(美国英语资源文件)

(1).JSP页面上的国际化(使用struts2的<s:text .../>):

<s:i18n name="message">
<s:text name="hello">
<s:param>${username}</s:param>
</s:text>
</s:i18n>

message_en_US.properties文件配置:

hello=hello world,{0}

message_zh_CN.properties文件配置:

hello=你好,{0}

(2)表单元素的Label国际化:

未国际化:

<s:textfield name="username" label="username"></s:textfield>
<s:textfield name="password" label="password"></s:textfield>

国际化后:

<s:textfield name="username" key="uname"></s:textfield>
<s:textfield name="password" key="pword"></s:textfield>

message_en_US.properties文件,配置:

uname=username

pword=password

message_zh_CN.properties文件,配置:

uname=用户名

pword=密码

(3).Action中的国际化:

未国际化:

this.addFieldError("username", "the username error!");
this.addFieldError("password", "the password error!");

国际化后:

this.addFieldError("username", "username.error");
this.addFieldError("password", "password.error");

message_en_US.properties文件配置:

username.error = the username error !

password.error = the password error!

message_zh_CN.properties文件配置:

username.error=用户名错误!

username.error=密码错误!

(4).配置文件中的国际化:

以输入校验的LoginAction-validation.xml为例:

未国际化:

<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>username should not be empty!</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">12</param>
<message>username should be between ${minLength} and ${maxLength}!</message>
</field-validator>
</field>

国际化后:

<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message key="username.empty !"></message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">12</param>
<message key="username.size"></message>
</field-validator>
</field>

message_en_US.properties文件配置:

username.empty = the username should not be empty !

username.size = the size of username shoule be between 6 and 12 !

password.empty = the password should not be empty !

password.size = the size of password shoule be between 6 and 12 !

message_zh_CN.properties文件配置:

username.empty =用户名不能为空 !

username.size = 用户名长度在6到12 !

password.empty =密码不能为空 !

password.size = 密码长度在6到12 !

注:message_zh_CN.properties这个国际化资源文件不允许包含非西欧字符。

Java提供了一个工具来处理该文件中的中文:native2ascii,这个工具可以在%JAVA_HOME%/bin路劲下找到。

2011级-csdn-java-张侃— Struts2.0国际化相关推荐

  1. 2011级-csdn-java-张侃—Struts2了解

    Struts2 Struts2是在WebWork2基础发展而来的.和struts1一样, Struts2也属于MVC框架.不过有一点大家需要注意的是:尽管Struts2和struts1在名字上的差别不 ...

  2. 2011级-csdn-java-张侃— Struts2——HelloWorld

    Struts2概述 在Struts的官方网站上,写着下面两段话: Apache Struts 2 is an elegant, extensible framework for creating en ...

  3. 2011级-csdn-java-张侃—第十一周周报

    河软CSDN乐知学院 学员周学习总结 姓名 张侃 周次 11 方向 Java 内 容 本周学习知识点: EL表达式简介 面向对象的程序设计模式 自定义JSP标签 本周学习收获: EL表达式简介 EL表 ...

  4. 详解蚂蚁金服 SOFAJRaft:生产级高性能 Java 实现

    SOFAStack(Scalable Open Financial Architecture Stack) 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景 ...

  5. 浅谈2011年上半年Java游戏领域动态

    浅谈2011年上半年Java游戏领域动态 时间过得真快,转瞬已是 2011 年 6 月,仿佛都能听到 2012 正率领天启四骑士向我们快速冲锋的马蹄声了.所以趁着世界还没毁灭,我就先来谈谈 2011 ...

  6. 用c语言编程确定一个相图的截面,2011级本科C语言上机复习题.doc

    2011级 <C语言程序设计> 上机复习题 编写一个程序,调用printf函数在一行上输出您的姓名,再调用一次printf函数在两个单独的行上输出您的名和姓.输出应该如下所示(当然里面要换 ...

  7. Struts2.0下的客户端验证

    Struts2.0 默认提供了 simple,xhtml,css_xhtml,ajax  几个模板主题, 但对于 simple 不支持客户端的js验证. 对 simple 和xhtml 下的几个文件进 ...

  8. struts2.0实现文件上传

    首先,引入jar包.除了 Struts2.0的几个核心jar包外,还需要额外引入commons-fileupload.jar和commons-io.jar. 引入这两个包的时候,似乎版本也是一个比较重 ...

  9. struts2.0获取各种表单的数据

    转自:http://www.2cto.com/kf/201107/97883.html 后台代码: 1 import java.util.List; 2 import com.opensymphony ...

最新文章

  1. gpg keys for php 5.5,Fedora解决/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-x86_64问题
  2. 6月份Asp.net源码推荐
  3. 对于全连接层的理解 全连接层的推导
  4. C++:求五位学生的总成绩以及平均成绩
  5. android:ImageView--scaleType属性
  6. 利用GPU加速的软件
  7. python for循环求1到100的和_python中用for循环语句实现1加到100的方法
  8. @Resource注解用法
  9. 【语言小知识】-java中将 两个int[] 型数组 整合到一起的方法
  10. 租客儿子高考608分,房东送上大礼“免租4年”
  11. 零基础go还是python_零基础学习Python的经验之谈
  12. MMyolo报错:undefined symbol: _ZN3c105ErrorC2ENS_14SourceLocationESs 的解决方案
  13. 零基础入门金融风控之贷款违约预测—特征工程
  14. [MacOS] 出现 Permission denied 解决办法
  15. 氚云根据后台返回数据写下拉框
  16. 2010-11-30 Proview end date!
  17. 【周志华机器学习】三、线性模型
  18. linux集群 disf,测试方法---SFDIPOT
  19. 下一代防火墙是什么 下一代防火墙产品有哪些
  20. c+语言:1%3c%3c,C语言教程第4章1课件

热门文章

  1. RK3399安装Ubuntu18.04
  2. windows文件读取 xxe_XML注入介绍--XXE,XEE,xpath等
  3. 语音打开应用的功能 语音助手 仿照iri
  4. C++计算两个日期之间的天数
  5. 易语言注册机原理介绍
  6. SpringCloud 应用在 Kubernetes 上的最佳实践 —— 高可用(弹性伸缩)
  7. 【hpuoj】防ak问题
  8. 大学四年专业学习规划目标
  9. 企业如何提升转化率、提高搜索排名?
  10. ZZULIOJ1164: 字符串加密