Web框架——Struts2国际化实现用户自行选择语言
2009-12-25 13:58
435 查看
Web框架——Struts2国际化实现用户自行选择语言
作者:娜 来源:程序员之家 发布者:admin
时间:2009-11-16 10:48:21 点击:182
在很多应用中,我们需要提供允许用户自行选择语言的功能。Struts2中可以通过ActionContext.getContext().setLocale(Locale
locale)设置用户的默认语言。Struts2还提供了一个名为i18n的拦截器(已经包含在默认拦截器栈中),i18n拦截器首先在请求中查找名为request_locale,如果存在,就将其转换成Locale,并设置成用户默认的Locale,此外i18n还会将其保存在Session的WW_TRANS_I18N_LOCALE属性中,如果存在此属性,则指定为用户浏览器的默认Locale。对象
我们在应用中,可以将我们系统所支持的语言放在一个下拉列表中,用户选择下拉列表中的某项时,将其值作为request_locale参数提交给Struts2就可以了。实现代码如下:
1,searchlanguage.jsp页面代码:此页面就是用户选择语言的页面,它也以嵌在任何页面下
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<script type="text/javascript">
function langSelecter_onChanged()
{
document.getElementById("langForm").submit();
}
</script>
<!--
将session里的WW_TRANS_I18N_LOCALE属性的值取出来,赋值给此页面的属性SESSION_LOCALE
-->
<s:set name="SESSION_LOCALE" value="#session['WW_TRANS_I18N_LOCALE']"/>
<!--
在此页面注册一个lee.Locales类型的Bean -->
<s:bean id="locales" name="lee.Locales">
<!--
给lee.Locales的参数current注入值SESSION_LOCALE
-->
<s:param name="current" value="#SESSION_LOCALE == null ? locale : #SESSION_LOCALE"/>
</s:bean>
<!--
提交给当前目录名.action处理,这样做是为了在任何都可以嵌入此selectlanguage.jsp页面,如果用户不需要此功能,这里也可以指定action
-->
<form action="<s:url/>" id="langForm"
style="background-color:#bbbbbb; padding-top: 4px; padding-bottom: 4px;">
<!--
从资源文件中读出key为languag的信息
-->
<s:text name="languag"/>
<!--
读出刚才注册的locales类实例的locales属性
-->
<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>
2,Locales类的代码如下:此类仅作数据装载,不做其它用途。
package lee;
import java.util.*;
public class Locales
{
//current属性,由于此属性只做赋值操作,不做取值操作,因此没有get方法
private Locale current;
public void setCurrent(Locale cur)
{
this.current = cur;
}
//locales属性,由于此属性只做取值操作,不做赋值操作,因此没有set方法
public Map<String, Locale> getLocales()
{
Map<String, Locale> locales = new Hashtable<String, Locale>();
//这里是根据当前用户选择的语言类型,获取指定资源文件,这一步非常重要
ResourceBundle bundle = ResourceBundle.getBundle("messageResource" , current);
//设置工程支持的语言类型,key里的值对应资源文件里的key的值
locales.put(bundle.getString("usen"), Locale.US);
locales.put(bundle.getString("zhcn"), Locale.CHINA);
return locales;
}
}
3,资源文件messageResource.properties中的内容如下:
languag=选择语言
usen=美式英语
zhcn=简体中文
4,struts.xml配置文件中的配置如下:
<action name="*">
<result>/WEB-INF/jsp/{1}.jsp</result>
</action>
这个action的配置意思就是返回你请求的那个JSP页面,因为所有的操作,在你选择语言的时候就已经完成了,所以无需其它的处理。
5,其它页面的调用方式:
其它JSP页面要调用此页面,只需要include就行了。如下例
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title><s:text name="loginPage"/></title>
</head>
<body>
<s:include value="selectlanguage.jsp"/>
<s:form action="Login">
<s:textfield name="username" key="user"/>
<s:textfield name="password" key="pass"/>
<s:submit key="login"/>
</s:form>
</body>
</html>
作者:娜 来源:程序员之家 发布者:admin
时间:2009-11-16 10:48:21 点击:182
在很多应用中,我们需要提供允许用户自行选择语言的功能。Struts2中可以通过ActionContext.getContext().setLocale(Locale
locale)设置用户的默认语言。Struts2还提供了一个名为i18n的拦截器(已经包含在默认拦截器栈中),i18n拦截器首先在请求中查找名为request_locale,如果存在,就将其转换成Locale,并设置成用户默认的Locale,此外i18n还会将其保存在Session的WW_TRANS_I18N_LOCALE属性中,如果存在此属性,则指定为用户浏览器的默认Locale。对象
我们在应用中,可以将我们系统所支持的语言放在一个下拉列表中,用户选择下拉列表中的某项时,将其值作为request_locale参数提交给Struts2就可以了。实现代码如下:
1,searchlanguage.jsp页面代码:此页面就是用户选择语言的页面,它也以嵌在任何页面下
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<script type="text/javascript">
function langSelecter_onChanged()
{
document.getElementById("langForm").submit();
}
</script>
<!--
将session里的WW_TRANS_I18N_LOCALE属性的值取出来,赋值给此页面的属性SESSION_LOCALE
-->
<s:set name="SESSION_LOCALE" value="#session['WW_TRANS_I18N_LOCALE']"/>
<!--
在此页面注册一个lee.Locales类型的Bean -->
<s:bean id="locales" name="lee.Locales">
<!--
给lee.Locales的参数current注入值SESSION_LOCALE
-->
<s:param name="current" value="#SESSION_LOCALE == null ? locale : #SESSION_LOCALE"/>
</s:bean>
<!--
提交给当前目录名.action处理,这样做是为了在任何都可以嵌入此selectlanguage.jsp页面,如果用户不需要此功能,这里也可以指定action
-->
<form action="<s:url/>" id="langForm"
style="background-color:#bbbbbb; padding-top: 4px; padding-bottom: 4px;">
<!--
从资源文件中读出key为languag的信息
-->
<s:text name="languag"/>
<!--
读出刚才注册的locales类实例的locales属性
-->
<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>
2,Locales类的代码如下:此类仅作数据装载,不做其它用途。
package lee;
import java.util.*;
public class Locales
{
//current属性,由于此属性只做赋值操作,不做取值操作,因此没有get方法
private Locale current;
public void setCurrent(Locale cur)
{
this.current = cur;
}
//locales属性,由于此属性只做取值操作,不做赋值操作,因此没有set方法
public Map<String, Locale> getLocales()
{
Map<String, Locale> locales = new Hashtable<String, Locale>();
//这里是根据当前用户选择的语言类型,获取指定资源文件,这一步非常重要
ResourceBundle bundle = ResourceBundle.getBundle("messageResource" , current);
//设置工程支持的语言类型,key里的值对应资源文件里的key的值
locales.put(bundle.getString("usen"), Locale.US);
locales.put(bundle.getString("zhcn"), Locale.CHINA);
return locales;
}
}
3,资源文件messageResource.properties中的内容如下:
languag=选择语言
usen=美式英语
zhcn=简体中文
4,struts.xml配置文件中的配置如下:
<action name="*">
<result>/WEB-INF/jsp/{1}.jsp</result>
</action>
这个action的配置意思就是返回你请求的那个JSP页面,因为所有的操作,在你选择语言的时候就已经完成了,所以无需其它的处理。
5,其它页面的调用方式:
其它JSP页面要调用此页面,只需要include就行了。如下例
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title><s:text name="loginPage"/></title>
</head>
<body>
<s:include value="selectlanguage.jsp"/>
<s:form action="Login">
<s:textfield name="username" key="user"/>
<s:textfield name="password" key="pass"/>
<s:submit key="login"/>
</s:form>
</body>
</html>
相关文章推荐
- Struts2国际化--用户自行选择程序语言的实现
- struts2实现用户自行选择语言
- Struts2实现用户自行选择语言
- 使用Struts2实现用户自行选择语言
- Struts2 i18n国际化(允许用户自行选择语言)
- Struts2中允许用户自行选择程序语言
- samba linux文件服务器 changepassword + httpd 实现用户web自行修改密码
- SpringMVC+FreeMarker+MyBatis框架搭建之国际化——Cookie存储用户语言
- struts2实现国际化,多语言切换
- 一个不错的Go语言实现的web框架
- .NET快速信息化系统开发框架 V3.2 -> Web 用户管理模块编辑界面-组织机构选择支持级联选择
- Web框架——小编浅谈Struts2中使用JSON插件实现Ajax
- 基于浏览器和手动选择语言的国际化实现
- Java Web中选择Struts2,Spring等框架的分析
- struts2学习笔记之十(用户选择语言环境小程序)
- Struts2用户主动选择国际化 应用详解
- web国际化,使用accept-language+cookie自动选择语言跳转页面!
- struts2 用户自定义实现国际化
- .NET快速信息化系统开发框架 V3.2 -> Web 用户管理模块编辑界面-组织机构选择支持级联选择
- JAVA_WEB Struts2学习:使用验证框架进行校验JSP页面元素 反编译工具的配置 Strtuts2 国际化学习