(十四)struts2的国际化
一、国际化的概念
国际化是指web程序在运行时,根据客户端请求的国家、语言的不同而显示不同的界面。
例如,如果请求来自中文客户端,则页面的显示,提示信息等都是中文,如果是英文客户端,则显示英文信息。
国际化的英文单词是Internationalization,但因为单词太长,简称I18N,I是第一个字母,18表示中间的字母个数,N是最后一个字母。
二、java中国际化的思路
1.必须先提供程序需要的资源文件,资源文件是很多键值对组成,键是程序使用的部分,值是页面显示的部分。 资源文件的命名规则:Name_language_country.properties name是资源文件的基本名,可以自由定义。language和country都必须使用java给我们提供的名称。 2.通过类加载资源文件,然后显示在页面上,java程序国际化的关键类是ResourceBundle
它有一个静态方法:
-getBundle(String baseName,Locale locale):baseName是资源文件的基本名,我们自己定义的那个,locale代表国家/语言
三、java国际化案例
(1)创建两个国际化资源文件
第一个文件:message_zh_CN.properties
内容:
hello=您好 第二个文件:message_en_US.properties
内容:
hello=hello,world
(2)在类中实现国际化
public class I18NDemo {
public static void main(String[] args) {
//根据locale加载国际化资源文件
ResourceBundle bundle=ResourceBundle.getBundle("com.cad.struts2.resource.message",Locale.CHINA);//加载中文资源文件,输出您好
//ResourceBundle bundle=ResourceBundle.getBundle("com.cad.struts2.resource.message",Locale.US);//加载英文资源文件,输出hello,world
String mess=bundle.getString("hello");
System.out.println(mess);
}
}
完成java国际化主要是提供不同语言的资源文件,然后使用ResourceBundle来根据不同的Locale加载语言资源文件,再根据指定Key来获取对应的字符串即可。
至于在jsp页面中显示国际化信息,可以使用jstl标签来完成。具体的可以百度。
四、struts2的国际化支持
struts2的国际化建立在java国际化之上。一样也是通过提供不同国家的资源文件,然后通过ResourceBundle加载指定Locale对应的资源文件,再通过指定key获取对应的信息。 整个过程完成相同,只是struts2进行了进一步封装,简化了操作。
五、struts2的国际化步骤
1.让系统加载国际化资源文件,有两种方式
-自动加载:Action范围、包范围的国际化资源文件由系统自动加载
-手动加载:JSP范围、全局范围的国际化资源文件,分别使用标签,配置常量的方式来手动加载。 2.输出国际化,有两种方式
-在视图页面输出国际化信息,需要使用struts2标签库
-在Action类中输出国际化信息,需要使用ActionSupport的getText()方法
六、struts2中Action的国际化
(1)配置全局的国际化资源
1.创建国际化资源,和上面的一样
2.在struts.xml中配置
struts.xml中配置方法:<constant name="struts.custom.i18n.resources" value="com.cad.struts2.resource.message"></constant> 3.在action中通过getText方法获取值
public class I18NDemo2 extends ActionSupport {
public String execute(){
String value=getText("hello");
System.out.println(value);
return SUCCESS;
}
}
(2)配置包范围的国际化资源
包范围的国际化资源可以被该包下的所有Action使用。
包范围的国际化资源文件的名称为:package_language_country.properties 例如 package_zh_CN.properties
文件放在包的根路径下。 包范围的国际化资源不用在配置文件中配置。
(3)配置Action范围的国际化资源
Action范围的国际化资源只能被该Action使用
在Action类所在的路径创建文件:ActionName_language_country.properties 例如:ActionDemo_zh_CN.properties
七、Action类中国际化资源的加载顺序
1.优先加载Action范围,当前Action类路径下的并且名字为ActionName的国际化资源文件
2.如果上一步未找到,并且Action有父类,则加载名字为Action父类的国际化资源文件
3.如果上一步未找到,并且Action有实现的接口,则加载名字为Action接口的国际化资源文件
4.如果上一步未找到,并且该Action实现接口ModelDriven,则对于getModel()方法返回的Model对象,重新执行第一步。
5.如果上一步未找到,则查找当前包范围的国际化资源文件
6.如果上一步未找到,则沿着当前包上溯,直到最顶层包中查找包范围的国际化资源文件
7.如果上一步未找到,则找全局的国际化资源文件。
8.如果上述所有步骤都没找到,则直接输出Key。
八、struts2视图资源的国际化
需要用到<s:text>标签,这个标签如果不经过action,直接访问页面,则显示全局的国际化资源
如果经过action,通过结果视图返回到页面,则按照国际化资源的加载顺序显示,从Action类路径下开始
<body> <s:text name="hello"></s:text>
</body> 如果经过action,还想显示全局的国际化资源 ,可以用以下方式 显示指定名称的国际化资源
//指定全局国际化资源名称
<s:i18n name="com.cad.struts2.resource.message">
<s:text name="hello"></s:text>
</s:i18n> 如果<s:i18n> 标签当成表单标签的父标签,则表单标签的key属性会从国际化资源文件中加载信息
(十四)struts2的国际化的更多相关文章
- 十四、Struts2的国际化
十四.Struts2的国际化 1.配置全局国际化消息资源包 配置全局消息资源包 <!--配置全局消息资源包 --> <constant name="struts.c ...
- 二十四、Struts2中的UI标签
二十四.Struts2中的UI标签 Struts2中UI标签的优势: 数据回显 页面布局和排版(Freemark),struts2提供了一些常用的排版(主题:xhtml默认 simple ajax) ...
- struts2官方 中文教程 系列十四:主题Theme
介绍 当您使用一个Struts 2标签时,例如 <s:select ..../> 在您的web页面中,Struts 2框架会生成HTML,它会显示外观并控制select控件的布局.样式和 ...
- struts2使用拦截器完成登陆显示用户信息操作和Struts2的国际化
其实学习框架,就是为了可以很好的很快的完成我们的需求,而学习struts2只是为了替代之前用的servlet这一层,框架使开发更加简单,所以作为一个小菜鸟,特别感谢那些超级无敌变态开发的框架供我们使用 ...
- 浅谈struts2的国际化----i18n
可能大家在使用struts框架的时候,偶尔会看到这个词: i18n.也就是 Internationalization i 开头,n 结尾. 总共18个字母,今天的主要内容就是环绕这 四个字母. ...
- Solon Web 开发,十四、与Spring、Jsr330的常用注解对比
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- 我的MYSQL学习心得(十四) 备份和恢复
我的MYSQL学习心得(十四) 备份和恢复 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) ...
- 雅虎(yahoo)前端优化十四条军规
第一条.尽可能的减少 HTTP 的请求数 (Make Fewer HTTP Requests ) http请求是要开销的,想办法减少请求数自然可以提高网页速度.常用的方法,合并css,js(将一个页面 ...
- Bootstrap<基础二十四> 缩略图
Bootstrap 缩略图.大多数站点都需要在网格中布局图像.视频.文本等.Bootstrap 通过缩略图为此提供了一种简便的方式.使用 Bootstrap 创建缩略图的步骤如下: 在图像周围添加带有 ...
随机推荐
- ElasticSearch DSL 查询
公号:码农充电站pro 主页:https://codeshellme.github.io DSL(Domain Specific Language)查询也叫做 Request Body 查询,它比 U ...
- winform捕捉全局异常
/// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Main() { try { //设置应 ...
- Linux 网络分析必备技能:tcpdump 实战详解
大家好,我是肖邦,这是我的第 11 篇原创文章. 今天要分享的是 tcpdump,它是 Linux 系统中特别有用的网络工具,通常用于故障诊断.网络分析,功能非常的强大. 相对于其它 Linux 工具 ...
- 将项目加载到tomcat中的时候报错:Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
转自:http://jingwang0523.blog.163.com/blog/static/9090710320113294551497/ 最近在用eclipse做项目,新建项目时什么都贪新,用最 ...
- Windows开发常用快捷键
毕业后一直在从事Windows开发工作,掌握些常用的Windows快捷键可以大大的提升工作效率,同时还能秀一波操作.本文记录在工作中常用的Windows快捷键,以及VS常用快捷键.掌握了这些键盘操作, ...
- CMD(命令提示符)的基本操作(文件夹)
打开CMD窗口,接下来将介绍如何使用CMD来创建.删除.修改.查看文件夹(目录) ps:以下所有文件夹将统一写成目录 1.1 使用CMD创建空目录(为了更好的演示,本文皆以D盘为当前路径),命令如下: ...
- SpringCloud(一):微服务架构概述
1-1. 系统进化理论概述 在系统架构与设计的实践中,经历了两个阶段,一个阶段是早些年常见的集中式系统,一个阶段是近年来流行的分布式系统: 集中式系统: 集中式系统也叫单体应用,就是把所有的程序.功 ...
- AVR单片机教程——第三期导语
背景(一) 寒假里做了一个灯带控制器: 理想情况下我应该在一个星期内完成这个项目,但实际上它耗费了我几乎一整个寒假,因为涉及到很多未曾尝试的方案.在这种不是很赶时间的.可以自定目标.自由发挥的项目中, ...
- springboot整合jsp,完成公交车站路线图
转: springboot整合jsp,完成公交车站路线图 点赞再看,养成习惯 开发环境: jdk 8 intellij idea tomcat 8 mysql 5.7 maven 3.6 所用技术: ...
- 【Azure 微服务】Service Fabric, 使用ARM Template方式来更新SF集群的证书(Renew SF Certificate)
问题描述 因证书过期导致Service Fabric集群挂掉(升级无法完成,节点不可用)一文中,描述了因为证书过期而导致了SF集群不可用,并且通过命令dd-AzServiceFabricCluster ...