论坛首页 Java企业应用论坛

Struts2讲义43

浏览 2270 次
锁定老帖子 主题:Struts2讲义43
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-11-02   最后修改:2009-11-02

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>
………
 

 

设置语言选项的 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>
…………
 

 

如图 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 部分。

  • 大小: 25.5 KB
  • 大小: 37.6 KB
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics