9.6 指定语言信息的不同方式
9.6.1概述
在本节开始之前,请读者把包级别的国际化信息删掉,仅保留全局级别的国际化信息。
在9.3.3小节中,已经学过修改、使用浏览器语言设置的方式了,这里就不赘述了。接下来看看其它的方式
9.6.2 Struts2的常量设置
还可以使用Struts2的常量设置来覆盖浏览器的语言设置。比如前面的示例,在struts.xml中加上struts.locale这个常量,值为需要使用的语言,示例如下:
java代码:
- <constant name="struts.locale" value="zh_CN"/>
这时候,会发现无论怎么修改浏览器的语言设置,Struts2都会去访问中文信息了。
9.6.3由用户选择语言
以上的两种设置,还可能满足不了日常需求:
- 常量设置太死板,加上了常量设置,就不方便访问其他语言的信息了。
- 浏览器语言设置太麻烦。用户想修改访问的语言时,必须到浏览器的属性对话框去一顿勾选。对于一般用户来讲,这太繁琐。
幸好Struts2提供了最灵活的、也是级别最高的方式,那就是由用户选择语言。用户只要在提交请求的时候加上request_locale这个参数,并提供对应的值就可以自由选择语言了。
这得力于Struts2的i18n内建拦截器,defaultStack拦截器栈引用了i18n拦截器,因此,能很方便的由用户来选择语言。
i18n拦截器在Action运行之前会检查请求中是否包含了一个叫做“request_locale”的参数,如果存在此参数,则会用它的值建立一个Locale对象,并用这个Locale对象去覆盖Struts2的常量设置和浏览器的语言设置。除此之外,i18n拦截器还会把这个Locale对象放到名为WW_TRANS_I18N_LOCALE的Session属性中去,而这个属性也会覆盖Struts2的常量设置和浏览器的语言设置。因此,只需要传入一次request_locale参数,session就会记住用户的选择,整个网站就会都变成用户选择的语言了。
来示例一下,第一次访问结果页面的时候,输出相关的session属性,如下:
java代码:
- <%@ taglib prefix="s" uri="/struts-tags" %>
-
- <s:form>
- <s:textfield name="name1" key="labela"/>
- </s:form>
- <hr>
- <s:property value="#session.WW_TRANS_I18N_LOCALE" default="找不到"/>
由于当前的struts.xml设置常量struts.locale的值为zh_CN,所以,第一次访问将会使用常量设置的中文,而且session中也没有WW_TRANS_I18N_LOCALE这个属性。运行结果如下:
图9.10 使用常量配置指定国际化语言种类的结果
再次访问的时候,在请求里面加上request_locale参数,设置值为en_US,完整URL为http://localhost:9080/helloworld/i18nAction.action?request_locale=en_US。
这时候,请求中带有request_locale参数并指定为英文,因此,页面访问英文的国际化信息,并将en_US存入了session。运行结果如下:
图9.11 使用用户请求参数指定国际化语言种类的结果
再来访问一次,访问路径为:http://localhost:9080/helloworld/i18nAction.action,虽然这次请求中没有包含request_locale参数,但是session已经纪录了用户上次选择的英文,因此页面仍然访问英文信息,且session中仍然有en_US。
9.6.4三种方式的覆盖关系
对于这三种指定语言种类的方式,其优先级为:
用户指定参数 > struts.xml中配置常量 > 浏览器设置
而且,用户参数指定的方式,只需要设置一次就可以了,在整个session生命周期内,都不用再次设置。
私塾在线网站原创《研磨struts2》系列
转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4088.html】
欢迎访问http://sishuok.com获取更多内容
分享到:
相关推荐
10. **国际化(Internationalization, i18n)**:Struts2支持多语言环境,通过资源包(properties文件)来实现。源代码中可能有相关的资源配置和使用。 通过研究这些源代码,你可以逐步掌握Struts2的精髓,包括如何...
为了让应用程序能够适应不同的语言环境,Struts2提供了国际化支持。 #### 11.2 国际化实现 - **资源文件**:使用.properties文件来存放不同语言的文本。 - **切换语言**:可以通过设置locale参数来切换语言。 ###...
### Struts2 运行流程及核心概念解析 #### Struts2 概述与 MVC 模式 **Struts2** 是一个基于 **MVC(Model-View-Controller)** 设计模式的 Java Web 应用框架。它通过将应用程序分为模型、视图和控制器三个部分来...
由于文件较大,我把这个文档切割为2部分,这是第一部分,请下载完第一部分后一定要下载第二部分,否则不能阅读。
国际化是Web应用的重要组成部分,Struts2提供了强大的国际化支持,包括资源文件的管理和多语言文本的呈现。通过正确的配置,可以轻松实现应用的多语言切换,满足不同地区用户的需求。 综上所述,这份系列文章深入...
Struts2的国际化和本地化支持也是重要的知识点,这对于构建多语言的应用至关重要。 在实际开发中,Struts2的异常处理机制和错误页面配置也是不可忽视的部分。开发者需要了解如何优雅地处理程序中的异常,以及如何...
4. **国际化与多语言支持**:介绍如何在Struts 2应用中实现多语言支持,包括资源文件的使用方法。 5. **高级主题**:例如自定义拦截器、文件上传下载、AJAX支持等内容。 6. **实战案例**:通过一个或多个实际项目,...
研磨Struts2 高清完整版,请和第一部分一起下载啊
12. **其他重要知识**:Struts2还涉及国际化、异常处理、主题与皮肤、动态方法调用等多个高级主题,这些内容使得Struts2能够应对复杂的Web应用需求。 通过《研磨Struts2》,读者可以系统地学习Struts2框架的各个...
研磨Struts2_12859679_高清完整版
研磨Struts2-高清-完整目录-2011年10月,分享给所有需要的人
第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) ...
第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) ...
研磨设计模式.part2 一定要下载5部分
研磨机说明书 研磨机是一种常用的机械设备,用于对金属、木材、塑料等材料进行研磨和加工。下面是研磨机的操作说明书,旨在帮助用户更快提高研磨质量。 一、主画面 研磨机的主画面分为自动画面、手动画面、调试...
第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) ...