https://www.cnblogs.com/likailan/p/3307409.html

struts2国际化(I18N)

  国际化也叫I18N,是Internationalization的简称。Struts2国际化是建立在Java国际化基础上,只是Struts2框架对Java国际化进行了进一步封装,从而简化了应用程序的国际化。

使用struts2 实现国际化

在上一次的”使用 Struts2 校验器校验用户注册信息“项目为基础上实现国际化:http://www.cnblogs.com/likailan/p/3302284.html

一、在strute.xml中指定资源文件的基名。

在strute.xml文件的struts标签里加入如下代码:

    <constant name="struts.custom.i18n.resources" value="message"/><constant name="struts.i18n.encoding" value="UTF-8" />

通过“struts.custom.i18n.resources”属性指定国际化资源文件的基名为“message”,位于src目录下。如果属性值为“cn.jbit.message”,则资源文件的基名仍是“message”,但位于“cn.jbit”包中。还可以通过“struts.i18n.encoding”属性指定默认的编码方案。如果要进行国际化,必须指定为“UTF-8”。

二、创建资源文件,用来存放相应的资源

资源文件为properties文件,命名规则为:基名 _语言代号_地区代号.properties。基名就是第一步里设置的“message”。语言代号和地区代号可以在IE里查看:打开IE->打开internet选项->点击语言->点击添加,可以看到如下“添加语言”对话框,里面就有显示各种语言和地区的代号:

在src目录下添加分别为 中文-中国 和 英文-美国 的资源文件。那么对应的文件名就是:

中文-中国:message_zh_CN.properties

英文-美国:message_en_US.properties

message_zh_CN.properties代码:

title=注册
form.email=邮箱:
form.password=密码:
form.repassword=重复密码:
form.phone=电话:
form.submit=提交

message_en_US.properties代码:

title=register
form.email=eMail:
form.password=password:
form.repassword=repassword:
form.phone=phone:
form.submit=submit

三、实现JSP页面信息的国际化显示

把和显示相关的文字都替换成  <s:text name="对应资源文件的键"/> 其中属性 name 的值为资源文件里相对应的key。如:<s:text name="title"/>      <s:text name="form.email"/>

页面代码:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"2     pageEncoding="UTF-8"%>3 <!-- 加载struts2标签库 -->4 <%@ taglib uri="/struts-tags" prefix="s"%>5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">6 <html>7 <head>8 <s:head/>9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
10 <!-- 把和显示相关的文字都替换成  <s:text name="对应资源文件的键"/> -->
11 <title><s:text name="title" /></title>
12 </head>
13 <body>
14     <form action="register.action" method="post">
15         <table>
16             <tr>
17                 <!-- 把和显示相关的文字都替换成  <s:text name="对应资源文件的键"/> -->
18                 <td><s:text name="form.email" /></td>
19                 <td><input type="text" name="email"/></td>
20                 <!-- 使用<s:fielderror/>标签输入相应的字段错误信息 -->
21                 <td><s:fielderror fieldName="email"/></td>
22             </tr>
23             <tr>
24                 <!-- 把和显示相关的文字都替换成  <s:text name="对应资源文件的键"/> -->
25                 <td><s:text name="form.password" /></td>
26                 <td><input type="password" name="password"/></td>
27                 <td><s:fielderror fieldName="password"/></td>
28             </tr>
29             <tr>
30                 <td><s:text name="form.repassword" /></td><td>
31                 <input type="password" name="repassword"/></td>
32                 <td><s:fielderror fieldName="repassword"/></td>
33             </tr>
34             <tr>
35                 <td><s:text name="form.phone" /></td>
36                 <td><input type="text" name="phone"/></td>
37                 <td><s:fielderror fieldName="phone"/></td>
38             </tr>
39             <tr>
40                 <td><input type="submit" value="<s:text name="form.submit" />"/></td>
41                 <td></td>
42                 <td></td>
43             </tr>
44         </table>
45     </form>
46 </body>
47 </html>

四、测试

启动tomcat。用IE打开register.jsp页面。

打开internet选项->点击语言->点击添加,可以看到如下“添加语言”对话框。添加“英语(美国)[en-US]”项,并把该项上移到最上层

刷新页面:

 实现验证错误信息的国际化显示

表单的验证错误信息也需要进行国际化显示,Struts 2 针对编码验证和验证框架都提供了国际化实现,此时验证错误信息以键值对的方式书写在资源文件中,而无需直接书写在validate方法或者验证配置文件中。

一、添加相应的国际化内容到资源文件中

message_zh_CN.properties添加如下国际化内容:

######### 校验错误信息 ###########
form.email.null=邮箱不能为空
form.email.format=邮箱格式不正确
form.password.null=密码不能为空
form.password.length=密码长度不能少于6位
form.repassword.same=两次密码不一至
form.phone.format=电话号码格式不正确

message_en_US.properties添加如下国际化内容:

######### 校验错误信息 ###########
form.email.null=eMail cannot be null
form.email.format=eMail format is error
form.password.null=password cannot be null
form.password.length=minimum password length is 6
form.repassword.same=repassword should be same with password
form.phone.format=phone format is error

二、修改验证框架的配置文件

修改验证框架的配置文件,去掉具体的验证错误信息,通过 <message> 标签的key属性指定其对应的验证错误信息。

修改后的 RegisterAction-register-validation.xml:

 1 <?xml version="1.0" encoding="UTF-8"?>2 <!DOCTYPE validators PUBLIC3         "-//Apache Struts//XWork Validator 1.0.2//EN"4         "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">5 6 <validators>7     <!-- name值为需要被校验的字段,这里对email字段进行校验 -->8     <field name="email">9         <!-- type值为校验器名,requiredstring:非空字符串校验器 -->
10         <field-validator type="requiredstring">
11             <!-- 去掉具体的验证错误信息,通过 <message> 标签的key属性指定其对应的验证错误信息。 -->
12             <message key="form.email.null" />
13         </field-validator>
14         <!-- 一个字段可以配置多个校验器,email:校验邮箱格式 -->
15         <field-validator type="email">
16             <!-- 去掉具体的验证错误信息,通过 <message> 标签的key属性指定其对应的验证错误信息。 -->
17             <message key="form.email.format" />
18         </field-validator>
19     </field>
20
21     <field name="password">
22         <field-validator type="requiredstring">
23             <message key="form.password.null" />
24         </field-validator>
25         <!-- stringlength:字符串长度校验 -->
26         <field-validator type="stringlength">
27             <!-- 为校验器指定参数实现不同的校验规则,minlength:最少长度 -->
28             <param name="minLength">6</param>
29             <message key="form.password.length"/>
30         </field-validator>
31     </field>
32
33     <!-- 校验两次密码是否一致,使用 fieldexpression 校验器。expression参数指定判断用的表达式 -->
34     <field name="repassword">
35         <field-validator type="fieldexpression">
36             <!-- 表达式要写在 <![CDATA[]]> 内 -->
37             <param name="expression"><![CDATA[repassword==password]]></param>
38             <message key="form.repassword.same"/>
39         </field-validator>
40     </field>
41
42     <!-- 校验电话格式,使用regex正则表达示校验,regexExpression参数指定正则表达式 -->
43     <field name="phone">
44         <field-validator type="regex">
45             <!-- 注意!2.3.15前的版本使用 expression 参数 -->
46             <param name="regexExpression"><![CDATA[\d{11}]]></param>
47             <message key="form.phone.format" />
48         </field-validator>
49     </field>
50
51 </validators>

四、测试

打开internet选项->点击语言->点击添加,可以看到如下“添加语言”对话框。添加“英语(美国)[en-US]”项,并把该项上移到最上层。刷新页面:

 通过超链接转换页面 语言-地区

 一、在register.jsp页面中添加如下超连接:

    <a href="changelan.action?request_locale=zh_CN">简体中文</a>&nbsp;&nbsp;&nbsp;<a href="changelan.action?request_locale=en_US">English</a>

跳到一个名为changelan的action里,传递名为request_locale(固定写化)的参数,值为要换转的 语言代号_地区代号。

二、编写相应的action类

ChangelanAction.java代码:

 1 import java.util.Locale;2 3 import com.opensymphony.xwork2.ActionContext;4 import com.opensymphony.xwork2.ActionSupport;5 6 7 public class ChangelanAction extends ActionSupport{8 9     public String execute() throws Exception {
10         //获得本地默认的语言环境
11         Locale locale=Locale.getDefault();
12         //存入到一个session变量中。"WW-TRANS-I18N-LOCALE"为固定写法
13         ActionContext.getContext().getSession().put("WW-TRANS-I18N-LOCALE", locale);
14         return SUCCESS;
15     }
16
17 }

三、配置struts.xml

在package标签内添加如下action标签:

<action name="changelan" class="ChangelanAction"><result name="success">register.jsp</result>
</action>

四、测试

页面如下:

点击简体中文:

点击English

使用 Struts 2 实现国际化相关推荐

  1. 菜鸟学Struts——I18N对国际化的支持

    大家肯定都喜欢玩游戏吧. 对于是一个游戏迷的话,肯定玩过不少很棒的经典单机游戏.比方说,国产的<古墓丽影>.<刺客信条>.<鬼泣>国产的仙剑.古剑等.在众多游戏系列 ...

  2. struts框架实现国际化(实现登录页面中英互换)

    新建一个Web工程,并且搭好框架 环境要求:Struts2框架环境搭建成功 上次已经介绍了Struts2框架的搭建,在这里就不在介绍了.下面是实例化的一个例子,有需要的可以参考一下. 首先,先写jsp ...

  3. Struts+2权威指南--基于WebWork核心的MVC开发源码下载

    <Struts 2权威指南--基于WebWork核心的MVC开发>李纲著,是学习Struts 2不错的书籍,这里给出光盘中带包源代码.所有例子直接放入tomcat下都能运行(个别例子有小错 ...

  4. Struts 2常见应用

    学习内容 Struts 2国际化 Struts 2的异常处理 Struts 2的文件上传与下载 能力目标 熟练使用Struts 2实现国际化 能通过Struts 2的异常处理增强WEB应用的健壮性 使 ...

  5. struts框架学习过程中的问题。

    1,错误: java.lang.NullPointerException: Module 'null' not found. 错误原因,struts运行需要的.jar文件拷贝不足,应该把它们加入到cl ...

  6. Java之国际化操作

                                           国际化操作 一.国际化对照表 Arabic, Egypt (ar-EG) ---------–阿拉伯语,埃及  Arabi ...

  7. java web开发常用标签

    struts标签库 国际化配置 配置国际化 1.国际化配置 在struts自带的app中的struts-config.xml中的<message-resources parameter=&quo ...

  8. java ssh 和mvc_[转]JAVA三大框架SSH和MVC

    Java-SSH(MVC) JAVA三大框架的各自作用 hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 也就是 ...

  9. java ssh 和mvc_JAVA三大框架SSH和MVC

    Java-SSH(MVC) JAVA三大框架的各自作用 hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 也就是 ...

最新文章

  1. ChaLearn Gesture Challenge_2:examples体验
  2. 构筑超异构计算时代,英特尔 AI 全布局
  3. Java日志的心路历程
  4. android中的定时任务一般有两种机制,android 定时任务
  5. Linux查看内置命令和非内置命令帮助的几种方法(man、help、info)
  6. 圣诞节,程序员应该给女朋友送一个线上圣诞树
  7. 计算机系统结构安全检测,信息安全体系结构安全测评实验报告.doc
  8. nlp基础—12.LSTM-CRF模型介绍
  9. MIT6.828 Part B: Copy-on-Write Fork
  10. 谁是史上最强-用爬虫分析IMDB TOP250电影数据
  11. Spring容器是什么?为什么要使用Spring容器?
  12. Gameplay框架
  13. 小屏幕android电视,手机屏幕还能投屏到电视?教你4种方法,1秒钟小屏变大屏
  14. 程序员的奋斗史(三十七)——大学断代史(一)——开篇
  15. python中对数字降序和升序_该程序查找在Python中按升序或降序排列数字的最低成本...
  16. 影子系统详细内容最强大全
  17. Java 周日期计算工具,获取当前第几周,按周数获取周一至周日,按日期获取周一至周日
  18. 20155214曾士轩 2016-2017-2 《Java程序设计》第1周学习总结
  19. MySQL数据库应用与管理
  20. vue Element

热门文章

  1. java path.resolve_Java Path.resolve方法代碼示例
  2. 寒门再难出贵子(很现实,很残酷,慎入)
  3. MySQL常见错误码
  4. 头条面试居然跟我扯了半小时的Semaphore
  5. Scrum框架详解总结
  6. html设置word页边距,word怎样设置页边距的两种方法
  7. Cross Domain Knowledge Transfer for Person Re-identification笔记
  8. 米兔机器人魔方_米兔卡片学习机首晒
  9. postman的使用-----号码归属地查询接口测试
  10. linux 系统启动故障处理(an error occurred during the file system check)