锁定老帖子 主题:Struts2实现国际化简单示例
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-03-12
开发国际化的应用程序时,有一个功能是必不可少的——让用户快捷地选择或切换语言。在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
在struts.xml中添加 <action name="I18nAction" class="jp.co.ricoh.action.i18n.I18nAction">
下面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”
<!--StartFragment -->
------------------------------------------------------------------------- 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(); } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 2583 次