Web框架——Struts2国际化实现用户自行选择语言

本文介绍如何使用Struts2框架实现应用的国际化功能,让用户能够自主选择语言偏好。通过定制化的拦截器和简单的前端交互,文章详细展示了实现过程及所需配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Web框架——Struts2国际化实现用户自行选择语言

 

作者:娜   来源: 程序员之家   发布者:admin
时间:2009-11-16 10:48:21   点击:182

 

 
我们在应用中,可以将我们系统所支持的语言放在一个下拉列表中,用户选择下拉列表中的某项时,将其值作为request_locale参数提交给Struts2就可以了。实现代码如下:
 
1searchlanguage.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;">
<!-- 从资源文件中读出keylanguag的信息 -->
    <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>
 
2Locales类的代码如下:此类仅作数据装载,不做其它用途。
 
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=简体中文
 
4struts.xml配置文件中的配置如下:
 
   <action name="*">
    <result>/WEB-INF/jsp/{1}.jsp</result>
   </action>
 
这个action的配置意思就是返回你请求的那个JSP页面,因为所有的操作,在你选择语言的时候就已经完成了,所以无需其它的处理。
 
5,其它页面的调用方式:
 
 
<%@ 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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值