`
Rainbow702
  • 浏览: 1078451 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类

struts2 通过下拉框来手动切换国际化

阅读更多

之前使用struts2实现过国际化,但当时都是以用户的浏览器的locale为主去加载相应的资源文件的。

但是,现在要求,在页面上加上一个下拉框,供用户手动选择一个语言。

本以为这是一个比较简单的需求,没想到做起来还是费了一番周折。

网上也查过,但是抄来抄去的,都差不多。所以还是自己新手做一下比较靠谱。

 

首先,HTML,就是一个简单的下拉框,里面两种语言,中文和英文

<form id="langForm" method="post">
    <span id="langChoose"><s:text name="page.login.item.language" /></span>
    <select id="lang" name="localeVal">
        <option value="1" <s:if test="#session.WW_TRANS_I18N_LOCALE.toString().equalsIgnoreCase('zh_CN')">selected</s:if>><s:text name="page.login.item.language.zh" /></option>
        <option value="2" <s:if test="#session.WW_TRANS_I18N_LOCALE.toString().equalsIgnoreCase('en_US')">selected</s:if>><s:text name="page.login.item.language.en" /></option>
    </select>
</form>

 如果有对“WW_TRANS_I18N_LOCALE”这个字符串不明白的,建议去看下struts2中“com.opensymphony.xwork2.interceptor.I18nInterceptor”这个类的源码,就知道了。

 

上面的下拉框的change事件:

$("#lang").change(function() {
    $("#langForm").attr("action", contextPath + "/locale!chgLocale").submit();
});

 

chgLocale方法如下:

public String chgLocale() {
    LOG.debug("chgLocale() start.");
    Locale locale = null;
    if (localeVal == Const.LOCALE_US) {
        locale = Locale.US;
    } else {
        locale = Locale.SIMPLIFIED_CHINESE;
    }
    session.put(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE, locale);

    LOG.debug("chgLocale() end.");
    return "jumpToLogin";
}

 看到这,可能大家都明白了,就是通过这个action,往session中增加一个键值对,其中:

键为: I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE,  即上面提到的“WW_TRANS_I18N_LOCALE”

值为:Locale.US,代表英文;或者 Locale.SIMPLIFIED_CHINESE, 代表简体中文。

 

以上即为国际化实现过程。

下面提醒一个问题点,可能大家会遇到:

如果某个jsp页面,是直接被访问的,如:

http://127.0.0.1:8080/test/login.jsp

那么,国际化将失效,它将始终采用浏览器的locale去加载国际化资源。为什么呢?因为这种方式是不会走struts2的拦截器的,具体地说,应该是“com.opensymphony.xwork2.interceptor.I18nInterceptor”这个拦截器。

那么,要怎么来处理这种情况呢?建议就是:所有的页面都通过action来转发。

 

分享到:
评论

相关推荐

    struts实现下拉框多级联动

    2. **Action类**:在Struts的Action类中,你需要定义获取下拉框选项的方法,这些方法会根据用户在前一级别下拉框的选择动态地加载下一个级别的选项。例如,当用户选择了国家后,`getProvinces()`方法将返回对应的...

    struts2中动态填充下拉框的例子

    在Struts2框架中,动态填充下拉框是常见的需求,尤其在开发Web应用时,我们需要根据后台数据库的数据来生成前端页面的选项。这有助于提供动态的、实时更新的用户界面,提高用户体验。本示例将详细介绍如何在Struts2...

    Struts2 自定义下拉框标签Tag(源码)

    自定义标签主要包括三个步骤: 1、编写java类,继承TagSupport类;...2、创建tld文件,影射标签名和标签的java类; 3、jsp页面引入tld。 博文地址:http://blog.csdn.net/itmyhome1990/article/details/50718282

    Struts2国际化(可选择语言)

    总的来说,这个例子展示了如何在Struts2框架下实现国际化功能,包括创建资源文件、在Action中获取本地化信息、在JSP中展示以及提供语言切换的界面。通过这样的实现,开发者可以轻松地为不同地区的用户提供定制化的...

    Struts2 自定义下拉框Tag标签

    Struts2是一个强大的MVC框架,它提供了丰富的标签库来简化视图层的开发工作。在Struts2中,自定义标签允许开发者扩展框架的功能,以满足特定需求。本篇文章将详细讲解如何在Struts2中自定义下拉框Tag标签。 首先,...

    支持手动输入的下拉框

    在IT界,尤其是在前端开发中,“支持手动输入的下拉框”是一种常见的用户界面元素,它结合了传统下拉选择框的功能与文本输入框的优势,为用户提供更灵活、高效的交互体验。这种组件通常被称为“自动补全”或“类型...

    C# winform datagridview 里的下拉框中 既可以从下拉框里选择数据,也可以让客户自己手动往里输入数据,

    接下来,为了让用户能够手动输入数据,我们需要设置`DataGridViewComboBoxColumn`的`EditMode`属性为`EditOnKeystrokeOrF2`或`EditOnF2`。这样,当用户点击单元格或按下F2键时,下拉框会变为可编辑状态,用户可以...

    struts2验证+拦截器+国际化+下载excle文档+ssh集成.rar

    在Struts2中,可以通过资源文件(通常为.properties格式)存储不同语言的文本,然后在模板或者Action中引用这些资源,实现界面语言的切换。 "下载Excel文档"功能涉及文件流处理和HTTP响应头设置。Struts2提供Action...

    ajax struts2 下拉框赋值(适合所有)

    本文将详细介绍如何在Struts2框架下利用Ajax技术为下拉框动态赋值,这是一个适用于所有下拉列表的通用方法。 首先,我们需要创建一个实体类来存储下拉框的选项信息。这个实体类称为`DictionaryBean`,包含三个属性...

    SSH2 三级联下拉框

    通过Struts2的控制层、Spring的服务层管理和Hibernate的数据持久化,开发者可以构建出高效且易于维护的Web应用。这个项目对于学习SSH2框架的开发者来说,是一个很好的实践示例,有助于提升他们对框架集成和业务逻辑...

    下拉框带模糊查询引入select2组件.zip

    5. 使用JavaScript初始化Select2,指定下拉框的ID以及可能的配置选项,如数据源、搜索函数等。 例如: ```html &lt;!DOCTYPE html&gt; &lt;link href="select2/css/select2.min.css" rel="stylesheet" /&gt; &lt;!-- 你的...

    select2 动态下拉框插件以及开发心得

    可以通过指定自定义CSS类或者使用select2提供的CSS选择器来解决。 3. **异步数据加载**:处理AJAX请求时,注意错误处理和用户体验。在数据加载期间展示加载指示器,错误时给出友好的提示。 4. **国际化**:select2...

    基于MFC实现list列表通过下拉框改变数据

    在本文中,我们将深入探讨如何基于Microsoft Foundation Class (MFC) 库来实现一个功能,即通过下拉框(ComboBox)来改变List控件(CListCtrl)中的数据。MFC是微软提供的一种用于开发Windows应用程序的C++类库,它...

    Java下拉框监听,加入界面,切换界面的处理

    在Java编程中,下拉框...在实际开发中,可能还需要考虑线程安全、国际化、自定义渲染器等问题,这些都是提升用户体验的关键因素。记住,实践是检验知识的最好方式,尝试动手实现上述概念,你会发现编程的乐趣所在。

    下拉框值触发另一个下拉框

    首先,我们来理解下拉框(Dropdown)的概念。在HTML中,下拉框是由`&lt;select&gt;`标签创建的,它提供了一个可折叠的选择列表,用户可以从中选择一个或多个选项。每个选项由`&lt;option&gt;`标签定义。例如: ```html ...

    select2 搜索下拉框插件

    **标题解析:** ...通过提供搜索、远程数据加载和无限滚动,select2 成为了开发高效、易用的下拉选择框的理想工具。使用这个插件,开发者可以轻松地将这些高级特性集成到他们的网页应用中,提高用户体验。

    可以输入的下拉框 下拉框和文本框组合共用

    可以输入的下拉框. 下拉框和文本框组合共用可以输入的下拉框. 下拉框和文本框组合共用可以输入的下拉框. 下拉框和文本框组合共用可以输入的下拉框. 下拉框和文本框组合共用可以输入的下拉框. 下拉框和文本框组合共用...

    SSH2中select下拉框的用法

    在SSH2(Spring、Struts2、Hibernate2)框架中,`select`下拉框是网页表单中常用的一种元素,用于提供用户选择一个或多个选项的界面。它通常与后端服务进行交互,用于从服务器获取数据并显示在前端。在本教程中,...

    WPF数据国际化的实现

    在WPF中界面国际化很容易实现,但是数据国际化确实是一个难题。为了解决项目中的需求,我设计了...2.在xaml中创建多套国际化,key为数据库中的值; 3.切换国际化时,加载不同的xaml; 4.通过key值获取对应的字符串。

Global site tag (gtag.js) - Google Analytics