9.3 用户主动选择国际化应用介绍
在之前章节需要在 URL 中自行定义 request_locale 参数值或者在操作系统中自行修改区域和语言选择来进行国际化。这样在用户体验度方面并不可取,因此可以在 JSP 或其他视图界面定义语言选项,用户只要在浏览器中自行点击语言选项链接就可以在适合自己的语言中进行业务等方面的操作。本节就介绍如何实现这样的国际化应用
技术要点
还是以登录作为本节示例,只不过在登录界面提供选择中文或英文的语言选项。并且依旧有占位符的使用。
语言选择的 Action 定义。
JSP 中语言选择的代码定义。
演示代码
国际化属性文件本示例使用的是全局属性文件,内容和之前章节中相同。在 struts.xml 配置文件中增加 1 个用于语言选择的 Action ,直接连向登录的 login.jsp 。并不需要 Action 代码,内容如下:
- <!-------------------文件名:struts.xml----------------->
- …………
- <!-- 切换中英文的语言设置的Action定义 -->
-
<action name="loginLanguage">
- <result>/jsp/login.jsp</result>
- </action>
- ………
<!-------------------文件名:struts.xml----------------->
…………
<!-- 切换中英文的语言设置的Action定义 -->
<action name="loginLanguage">
<result>/jsp/login.jsp</result>
</action>
………
设置语言选项的 login.jsp 代码。
- <!-------------------文件名:login.jsp----------------->
- …………
- <!-- 指定URL为英文的语言设置 -->
-
<s:url id="english" action="loginLanguage">
- <!-- 参数request_locale设置英文 -->
-
<s:param name="request_locale">en_US</s:param>
- </s:url>
- <!-- 英文语言设置的链接定义 -->
-
<s:a href="%{english}">English</s:a>
-
- <!-- 指定URL为中文的语言设置 -->
-
<s:url id="chinese" action="loginLanguage">
- <!-- 参数request_locale设置中文 -->
-
<s:param name="request_locale">zh_CN</s:param>
- </s:url>
- <!-- 中文语言设置的链接定义 -->
-
<s:a href="%{chinese}">中文</s:a>
- …………
<!-------------------文件名:login.jsp----------------->
…………
<!-- 指定URL为英文的语言设置 -->
<s:url id="english" action="loginLanguage">
<!-- 参数request_locale设置英文 -->
<s:param name="request_locale">en_US</s:param>
</s:url>
<!-- 英文语言设置的链接定义 -->
<s:a href="%{english}">English</s:a>
<!-- 指定URL为中文的语言设置 -->
<s:url id="chinese" action="loginLanguage">
<!-- 参数request_locale设置中文 -->
<s:param name="request_locale">zh_CN</s:param>
</s:url>
<!-- 中文语言设置的链接定义 -->
<s:a href="%{chinese}">中文</s:a>
…………
如图 9.11 ,有语言选项的登录页面。
图 9.11 语言选项的登录界面
如图 9.12 ,选择英文后的登录界面,注意查看地址栏中的 URL 。
图 9.12 URL 中指定了参数 request_locale 的值
代码解释
( 1 )在 struts.xml 文件中定义了 1 个不经过 Action 的类映射的 Action 。它相当于 1 个页面链接。这里笔者使用的全局国际化属性文件定义。因此目的其实就是在链接中给系统传入不同的参数 request_locale 值。
( 2 )在 login.jsp 中,使用了 Struts2 标签 <url> ,该标签其实就是定义 1 个链接中需要指向的值。这里设置 id 属性是方便使用 OGNL 表达式来标明在 Struts2 标签 <a> 中使用哪 1 个 URL 。而 login.jsp 中定义了两个 URL ,它们只是参数 request_locale 的值不一样。 1 个是 zh_CN ,另外 1 个是 en_US 。使用的 Action 都是之前在 struts.xml 中定义的“ loginLanguage ”。
接着定义两个 Struts2 标签 <a> ,它们的 href 属性都是 OGNL 表达式(关于 OGNL 表达式前面章节有介绍)。指向定义好的两个 URL 。
注意:这里两个 URL 的 id 属性名最好不同,否则重名的话,会让链接没有指向自己需要的语言选项的登录界面。笔者使用了“ chinese ”和“ english ”分别说明这两个 URL 1 个是传递值为 zh_CN 的 request_locale 参数值, 1 个是传递值为 en_US 的 request_locale 参数值。
( 3 )在登录界面点击“ English ”后指向的 login.jsp 中的显示的都是英文。仔细看红框选中的 URL ,就会发现已经实现了点击“ English ”链接后,向“ loginLanguage ”这个 Action 传递了值为“ en_US ”的 request_locale 参数值。这样之后输入用户名和密码后,按“ login ”按钮后显示的登录成功界面的信息也是英文的。
( 4 )在很多 Web 网站上都在首页某 1 部分可以让用户选择网站的语言选项。如果点击了某一语言后,整个网站所有的数据信息都显示该语言文字(比如 51job 中简历的“中文”和“英文”语言版本的选择)。其原理就是把 Session 中的 request_locale 参数值设置为该语言选项。这样用户也没必要在操作系统中选择语言或者使用其他办法选择语言选项。在 Struts2 中国际化的应用其实也可以实现这一功能。具体实现就如笔者本节所记述。请读者好好参透本小节,毕竟国际化的应用也是实际开发中很重要的 1 部分。
分享到:
相关推荐
### Struts2讲义知识点概览 #### 一、Struts2的历史与发展 - **Struts框架的发展历程**: - Struts最初版本发布于2000年,是Java Web开发领域的一个重要里程碑。 - 随着时间的发展和技术的进步,Struts逐渐暴露...
### Struts2框架入门知识点详解 #### 一、Struts2框架概述 ##### 1.1 Struts2简介 Struts2是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,用于简化Java Web应用程序的开发过程。与传统的Java Web...
struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义
本讲义将详细介绍Struts2的核心概念、工作原理以及如何在实际项目中应用。 一、Struts2简介 Struts2是Apache软件基金会的开源项目,它是Struts1的升级版,旨在解决Struts1在可扩展性和灵活性上的不足。Struts2提供...
在本讲义中,我们将深入探讨Struts2的基本概念、依赖的库、启动配置以及配置文件。 首先,开发Struts2应用需要依赖一些核心的JAR文件。这些文件包括: 1. `struts2-core-2.x.x.jar`:这是Struts2框架的核心库,...
### Struts2框架详解 #### 一、Struts2框架介绍与概述 ##### 1.1 Struts2框架概述 Struts2是一个基于MVC(Model-View-Controller)模式的开源Java Web应用框架,它提供了强大的功能来帮助开发者构建灵活、可扩展...
第2章 Web基础技术简介第3章 Struts2核心技术第4章 另一Struts2核心技术:拦截器第5章 Struts2标签库第6章 Struts2非JSP视图技术第7章 Struts2类型转换技术第8章 Struts2输入校验第9章 Struts2国际化第10章 Struts2...
本讲义详细介绍了Struts2框架的各个方面,帮助开发者从基础到进阶全面掌握其用法。 1. **Struts2概述** Struts2是Apache软件基金会的开源项目,它继承了Struts1的优点并解决了其局限性,提供了更优秀的行动控制器...
### Struts2讲义知识点概览 #### 一、Struts2的历史与发展 - **Struts框架的演变**:从Struts1到Struts2,框架经历了从MVC(Model-View-Controller)架构的经典实践到更为灵活、强大的迭代升级。 - **Struts2的...
本教程讲义深入浅出地介绍了Struts2的核心概念和技术,旨在帮助开发者快速掌握这个框架的使用。 在Struts2中,主要知识点包括: 1. **MVC设计模式**:MVC模式是软件工程中的经典设计模式,它将应用程序分为模型...
这个“struts2讲义”显然提供了一个全面的教程,旨在帮助学习者理解和掌握Struts2的核心概念和技术。以下是Struts2的一些关键知识点: 1. **MVC模式**:Struts2基于Model-View-Controller(MVC)设计模式,它将应用...
Struts2讲义1 Struts2是一款基于MVC(Model-View-Controller)设计模式的Java Web开发框架,由Apache软件基金会维护。它继承了Struts1的优点,并结合了WebWork框架的功能,提供了更强大的控制层解决方案。Struts2的...
西安野马计算机培训学校的STRUTS2讲义,可能涵盖了这一框架的基础知识和高级特性,帮助学员理解和掌握Struts2的核心概念。 首先,Struts2的基础部分可能包括以下几个方面: 1. **架构原理**:讲解Struts2的MVC设计...
Struts2讲义 作者:吴峻申 目录 第1章 Struts过时了吗? 10 1.1 Struts历史发展过程 10 1.2 Struts2的“简历” 13 1.2.1 标签库介绍 13 1.2.2 拦截器应用目的 14 1.2.3 FilterDispatcher和Action概述 14 1.2.4 ...
Struts2是Apache软件基金会...总的来说,黑暗浪子的这本Struts2讲义涵盖了Struts2的各个方面,无论对于初学者还是有经验的开发者,都是一个宝贵的参考资料,能帮助读者深入理解和熟练运用Struts2框架,提高开发效率。