开发国际化的应用程序时,有一个功能是必不可少的——让用户快捷地选择或切换语言。在Struts 2.0中,通过ActionContext.getContext().setLocale(Locale arg)可以设置用户的默认语言。不过,由于这是一个比较普遍的应用场景(Scenario),所以Struts 2.0为您提供了一个名i18n的拦截器(Interceptor),并在默认情况下将其注册到拦截器链(Interceptor chain)中。它的原理为在执行Action方法前,i18n拦截器查找请求中的一个名为"request_locale"的参数。如果其存在,拦截器就将其作为参数实例化Locale对象,并将其设为用户默认的区域(Locale),最后,将此Locale对象保存在session的名为“WW_TRANS_I18N_LOCALE”的属性中。
下面开始简单的演示一下:
Locales类,后续待用JavaBean
package jp.co.ricoh.action.i18n;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
public class Locales {
public Map<String,Locale> getLocales(){
Map<String,Locale> locales = new HashMap<String,Locale>();
locales.put("American English", Locale.US);
locales.put("Simplified Chinese", Locale.CHINA);
return locales;
}
}
在struts.xml中添加
<action name="I18nAction" class="jp.co.ricoh.action.i18n.I18nAction">
<result>/i18n/i18n.jsp</result>
</action>
下面i18n.jsp的内容:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<script type="text/javascript">
function langSelecter_onChanged(){
document.langForm.submit();
}
</script>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Internationalization</title>
</head>
<body>
<s:set name="SESSION_LOCALE" value="#session['WW_TRANS_I18N_LOCALE']"></s:set>
<s:bean name="jp.co.ricoh.action.i18n.Locales" id="locales"></s:bean>
<form action="I18nAction" name="langForm"
style="background-color: powderblue; padding-top: 4px; padding-bottom: 4px;">
Language: <s:select label="Language"
list="#locales.locales" listKey="value" listValue="key"
value="#SESSION_LOCALE == null ? locale : #SESSION_LOCALE"
name="request_locale" id="langSelecter"
onchange="langSelecter_onChanged()" theme="simple"/>
</form>
<s:text name="helloworld"></s:text>
</body>
</html>
在浏览器中敲入:
http://localhost:8080/ricoh/i18n/i18n.jsp
<!--StartFragment -->
选择“American English”
-------------------------------------------------------------------------
package jp.co.ricoh.action.i18n;
import com.opensymphony.xwork2.ActionSupport;
public class I18nAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = -6713811430767941801L;
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return super.execute();
}
}
分享到:
相关推荐
在Struts2中实现国际化是一项关键功能,它允许应用程序为不同的语言和地区提供本地化的用户体验。下面将详细介绍如何使用Struts2来实现国际化,并探讨相关的源码和工具。 **一、国际化基础** 国际化(i18n)是软件...
通过这种方式,我们可以在不修改Action代码的情况下,利用Struts2拦截器实现国际化策略的动态调整,从而提供更灵活的多语言支持。 总的来说,Struts2拦截器和国际化是两个关键特性,它们分别提供了控制流管理和多...
9. **国际化和本地化**:为了支持多语言,Struts2允许应用实现国际化。Bookzilla项目可能包含了资源文件(如.properties文件),存储不同语言的文本,根据用户的首选语言加载相应的字符串。 10. **错误和异常处理**...
在Struts2中实现国际化,主要包括配置、JSP页面、表单和Action类的处理。 首先,在`struts.xml`配置文件中,我们需要声明全局的国际化资源文件。通过设置常量`struts.custom.i18n.resources`的值为`message`,我们...
在Struts2中,实现国际化通常涉及以下几个步骤: 1. **创建资源束文件**:在项目的`src/main/resources`目录下创建对应的资源文件,比如`messages.properties`作为默认语言(通常是英文),然后根据需要添加其他...
首先,要实现国际化,我们需要创建资源文件。在Java中,这些通常是`.properties`文件,例如`message_en.properties`(英语)和`message_zh_CN.properties`(简体中文)。这些文件包含键值对,键是消息的唯一标识,值...
在“struts2国际化测试”这个主题中,我们将探讨如何在Struts2框架下实现应用程序的国际化功能。 首先,国际化(i18n,i代表第9个字母n,18是n到i的字母数,表示国际化)是使软件能够适应不同语言和文化背景的重要...
接下来,我们将通过一个具体的HelloWorld示例来详细了解Struts2如何实现国际化。 **1. 工程搭建** - 在Eclipse中创建一个新的项目,并配置好Struts2的相关依赖库及环境。 **2. 配置Struts2** - **`struts....
本文将重点介绍如何在Struts 2.0中实现国际化,并通过一个简单的“Hello World”示例来展示其实现过程。 #### 二、Struts 2.0中的国际化机制 Struts 2.0在国际化方面做了很多改进,使其更加灵活且易于使用。以下是...
这个"struts2简单示例"旨在帮助初学者快速掌握Struts2的基本用法,特别是实现一个简单的登录功能。下面将详细解释相关知识点。 首先,Struts2框架的核心是Action类,它是处理用户请求的中心。在这个示例中,你会...
在Struts2中实现国际化,主要涉及到以下步骤: 1. **创建资源文件**:资源文件通常以.properties为扩展名,例如`messages.properties`。这个文件用于存储所有需要翻译的文本,每一行代表一个键值对,键是唯一的...
Struts2支持应用的多语言支持和UI主题定制,使得应用更易国际化和美化。 8. ** strut2-tags** 文件夹: 可能包含了演示Struts2 JSP标签的示例代码,帮助开发者理解如何在实际项目中使用这些标签。 通过学习和...
Struts2 的国际化实现方式示例 Struts2 的国际化实现方式示例是指通过 Struts2 框架实现国际化的方法。...Struts2 的国际化实现方式示例提供了一种简单的方法来实现国际化,使得软件能够适应不同语言和地区的需求。
下面,我们将深入探讨如何在Struts2框架中实现国际化。 首先,国际化的核心在于资源文件,通常使用.properties格式,例如`messages.properties`和`messages_zh_CN.properties`。前者是默认的语言版本,后者是中文版...
6. **国际化和错误处理**:为了使应用更加健壮,示例可能还包含了国际化资源文件(如`messages.properties`),用于处理错误消息和多语言支持。 通过这个计算器示例,学习者可以深入理解Struts1.2框架的请求处理...
这个"Struts 2简单小示例"旨在帮助初学者理解并掌握Struts 2的基本用法和核心概念。 在描述中提到的"http://localhost:8080/test/welcome"是Struts 2应用的一个URL,通常在本地开发环境中,我们可以访问这个URL来...
Struts2是一个强大的MVC(模型-视图-控制器)...以上就是基于Struts2的简单示例所涵盖的关键知识点。通过这个基础示例,你可以了解到Struts2框架的基本工作流程和主要组件,为进一步学习和应用Struts2打下坚实的基础。
Struts2是一个流行的Java Web开发框架,用于构建企业级应用程序。它基于Model-View-Controller (MVC)...通过这个简单的Demo,开发者可以快速理解如何在Struts2项目中实现国际化功能,从而为全球用户提供更好的服务。
本教程主要关注Struts 2的基础知识和简单示例程序。 在Struts 2框架中,核心组件`struts2-core-2.5.18.jar`是必不可少的,它包含了框架的主要功能,如Action类、配置管理、拦截器链和结果处理等。`freemarker-...
Struts2的核心功能包括动作映射、拦截器、结果类型和插件等,它提供了丰富的特性,如国际化、数据验证和文件上传等。在本示例中,“StrutsJson”可能是服务端的一个模块,它利用Struts2的JSON结果类型来发送和接收...