`

struts2之消息处理与国际化

 
阅读更多

 

概述

 

在程序设计领域,把在无需改写源代码即可让开发出来的应用程序能够支持多种语言和数据格式的技术称为国际化。

与国际化对应的是本地化,指让一个具备国际化支持的应用程序支持某个特定的地区。

 

Struts2 国际化是建立在 Java 国际化基础上的:

1. 为不同国家/语言提供对应的消息资源文件

2. Struts2 框架会根据请求中包含的<s:text name="submit"></s:text>

3. Locale 加载对应的资源文件

4. 通过程序代码取得该资源文件中指定 key 对应的消息

 

配置国际化资源文件

 

方法一:Action范围资源文件:

在Action类文件所在的路径建立名为ActionName_language_country.properties 的文件

 

方法二:包范围资源文件:

在包的根路径下建立文件名为package_language_country.properties 的属性文件,一旦建立,处于该包下的所有 Action 都可以访问该资源文件。注意:包范围资源文件的 baseName 就是package,不是Action所在的包名。

 

方法三:全局资源文件

命名方式: basename_language_country.properties

在struts.xml文件中配置:<constant name="struts.custom.i18n.resources" value="baseName"/>

或在struts.properties文件中配置:struts.properties struts.custom.i18n.resources=baseName

 

方法四:临时指定资源文件:

<s:i18n.../> 标签的 name 属性指定临时的国际化资源文件

 

加载资源文件的顺序

 

假设我们在某个 ChildAction 中调用了getText("submit"):

(1)加载和 ChildAction 的类文件在同一个包下的系列资源文件 ChildAction.properties

(2)加载  ChildAction 实现的接口 IChild,且和 IChildn 在同一个包下 IChild.properties 系列资源文件。

(3)加载 ChildAction 父类 Parent,且和 Parent 在同一个包下的 baseName 为 Parent.properties 系列资源文件。

(4) 若 ChildAction 实现 ModelDriven 接口,则对于getModel()方法返回的model 对象,重新执行第(1)步操作。

(5) 查找当前包下 package.properties 系列资源文件。

(6) 沿着当前包上溯,直到最顶层包来查找 package.properties 的系列资源文件。

(7) 查找 struts.custom.i18n.resources 常量指定 baseName 的系列资源文件。

(8) 直接输出该key的字符串值。

 

访问国际化消息

 

方式一:JSP 页面访问国际化消息:

 

a)不带占位符:

<s:text name="key"/>

表单元素的 label 属性:可替换为 key 或使用 getText() 方法,并对其进行强制 OGNL 解析

 

b)带占位符:

在 <s:text.../> 标签中使用多个 <s:param.../> 标签来填充消息中的占位符。

Struts2 直接在国际化消息资源文件中通过 “${}” 使用表达式,该表达式将从值栈中获取对应的属性值

 

方式二:Action 访问国际化消息:

若 Action 类继承了 ActionSupport ,则可调用 TextProvider 接口的 getText 方法。

 

利用超链接实现动态加载国际化资源文件

 

a) Struts2 使用 i18n 拦截器 处理国际化,并且将其注册在默认的拦截器中

b) i18n拦截器在执行Action方法前,自动查找请求中一个名为request_locale 的参数。如果该参数存在,拦截器就将其作为参数,转换成Locale对象,并将其设为用户默认的Locale(代表国家/语言环境)。并把其设置为 session 的 WW_TRANS_I18N_LOCALE 属性

c) 若 request 没有名为request_locale 的参数,则 i18n 拦截器会从 Session 中获取 WW_TRANS_I18N_LOCALE 的属性值,若该值不为空,则将该属性值设置为浏览者的默认Locale 

d) 若 session 中的 WW_TRANS_I18N_LOCALE 的属性值为空,则从 ActionContext 中获取 Locale 对象。

 

I18N 拦截器确定Locale对象流程分析

 



 

 

 

 

 

 

 

 

 

  • 大小: 58.5 KB
分享到:
评论

相关推荐

    struts2国际化处理全解

    励智教育,struts2国际化处理教程案例及幻灯片,网址:http://www.lizhi.cc

    struts2国际化 标签 页面 处理类

    struts2国际化 标签 页面 处理类 实例,特殊注意点说明

    STRUTS2国际化的问题

    struts国际化的描述,其中包括在配置文件中配置实现,以及在后台中或者是前台中处理实现国际化的过程。

    2009MLDN魔乐科技Struts课堂05-Struts_Struts国际化处理.rar

    009MLDN魔乐科技Struts课堂05-Struts_Struts国际化处理.

    2009MLDN魔乐科技Struts课堂05-Struts_Struts国际化处理

    2009 MLDN魔乐科技 Struts课堂实战视频教程 全6讲 01-Struts_简介与登陆范例 02-Struts_工作原理与核心配置 03-Struts_对于输入参数的处理 ...05-Struts_Struts国际化处理 非常经典,适合初学者!

    一个利用struts做的简单国际化

    5、消息文本的国际化处理,共有三个步骤: * 创建国际化消息 * 传递国际化消息 * 显示国际化消息 如何创建国际化消息? 理解ActionMessage和ActionMessages两个对象的区别 如何传递国际化消息? * 调用...

    STRUTS 2完全学习手册.pdf

    包括Struts 2中配置文件的详细讲解、国际化与异常处理、数据类型的转换、数据的输入校验、Struts 2强大的标签库、Struts 2中文件的上传与下载、Struts 2对Ajax的支持、Struts 2与流行框架的整合,最后以3个实例由...

    Struts+Hibernate+Spring(加入了struts完整的自动异常处理和国际化)源码

    Struts+Hibernate+Spring(加入了struts完整的自动异常处理和国际化)源码

    struts2国际化

    使用strtus2.3.15 国际化处理 做了个很简单的登入页面,添加了国际化按钮(中文,英文) 不喜勿喷 界面简陋 不喜勿下 高手勿喷,初学者很实用 此包无源码 注意:如果不喜欢就不要下,这个版本没有源码,之前提供源码,网友...

    struts2 详解文档

    Struts 2的处理流程与Action的管理方式 为应用指定多个配置文件 动态方法调用和使用通配符定义action 请求参数接收 自定义类型转换器 全局类型转换器 访问或添加几个属性 文件上传 多文件上传 自定义拦截...

    Struts2入门教程(全新完整版)

    1.action级别下的国际化 47 2.配置package的资源文件 48 3.app级别的资源文件 48 4.使用资源文件的原理 49 5.选择使用资源文件 49 八、验证机制 50 1.基于手工编码的校验 50 简析校验流程: 53 2.基于XML配置形式的...

    struts2讲义_吴峻申

    8.2.3 Struts2输入校验出错信息的国际化配置形式 163 8.3 集合类型输入校验介绍 165 8.3.1 Struts2中单个Java对象的输入校验形式 166 8.3.2 Struts2对象集合即批量输入的校验形式 169 8.4 Struts2输入校验器大全 171...

    Struts2属性文件详解

    该属性指定Struts 2应用所需要的国际化资源文件,如果有多份国际化资源文件,则多个资源文件的文件名以英文逗号(,)隔开. struts.diSPAtcher.parametersWorkaround 对于某些Java EE服务器,不支持HttpServlet Request...

    深入浅出Struts2

    第9章 消息处理与国际化 第10章 Model Driven和Preparable拦截器 第11章 持久层 第12章 文件的上传 第13章 文件的下载 第14章 提高Struts应用程序的安全性 第15章 防止重复提交 第16章 调试与性能分析 第17章 进度条...

    Struts简介 什么是Struts Struts基本运作流程

    Struts简介 什么是Struts Struts基本运作流程 ActionMapping类 Action类 ActionForm类 ActionError与ActionMessage 协同开发 模块化程序 Struts异常处理 Struts国际化支持 PlugIn接口 等等

    Struts2 学习笔记

    三、 Struts2国际化 35 1、 Action级别 35 2、 Package级别 36 3、 Application级别 36 四、 资源文件中的参数处理 37 五、 国际化-动态语言切换 37 09 自定义拦截器 38 10 类型转换 38 Struts2总结 39

    Struts2完全自学手册(16-19)

    包括Struts 2中配置文件的详细讲解、国际化与异常处理、数据类型的转换、数据的输入校验、Struts 2强大的标签库、Struts 2中文件的上传与下载、Struts 2对Ajax的支持、Struts 2与流行框架的整合,最后以3个实例由...

    struts2课程笔记

    struts2知识点:处理流程,基本配置,与servlet的API解耦,结果类型,通配符和动态方法的调用,类型转换,文件上传,拦截器,表单验证,国际化,OGNL表达式,UI标签,模型驱动,防止表单重复提交,项目练习知识点:...

    struts国际化处理实例

    相信你一定使用过让用户自己选择显示语言的应用系统,本实例讲解了实现这个功能的全过程,希望对您有所帮助!

Global site tag (gtag.js) - Google Analytics