码迷,mamicode.com
首页 > 编程语言 > 详细

struts2实现用户自行选择语言

时间:2015-05-13 22:02:12      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:struts2实现用户自行选择语言

    如果用户根据自己的喜好能选择定制语言将是一件比较友好的事,struts2中可以轻易的实现用户定制语言。
    在struts2中,可以通过ActionContext.getContext().setLocale(Locale arg)设置用户的默认语言。为了简化设置
用户默认语言环境。Struts2提供了一个名为i18n的拦截器(Interceptor),并且将其注册在默认的拦截器中(defaultStack).
    程序的思路是i18n拦截器在执行Action方法钱,自动查找请求中一个名为request_locale的参数。如果该参数存在,拦截器就将其作为参数,转换成Locale对象,并将其设置为用户默认的Locale。

    程序中将通过给request_locale的参数传递不同的参数(zh_CN或en_US)来实现页面语言符号的变化。看下面子:


    在src下创建Action包,并在Action中创建名为LoginAction.java的Action。同时在src目录中创建资源文件
loginResource_en_US.properties和loginResource_zh_CN.properties文件,配置文件struts.properties和struts.xml。
LoginAction.java
package action;


import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String userName;
private String password;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String succ(){
return "success";
}
public String lang(){
return "input";
}
}
代码后面的两个方法secc()和lang(),succ()对应表单数据提交,lang()的实质作用死实现视图页面的刷新。里面并没有
什么逻辑,这两个方法就是实现页面跳转。转向的同时根据i18n拦截器所获取request_locale的值不同而现实不同的页面
提示信息.


struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="struts2language" extends="struts-default">
<action name="succ" class="action.LoginAction" method="succ">
<result name="success">/success.jsp</result>
</action>


<action name="lang" class="action.LoginAction" method="lang">
<result name="input">/index.jsp</result>
</action>
</package>
</struts>    


struts.properties
struts.custom.i18n.resources=loginResource
struts.i18n.encoding =gbk
第一个参数用于指定全局资源文件的名称。第二个参数用于国际化信息内码,否则传递的过程中会出现乱码。


loginResource_en_US.properties
login.title=English Page
login.welcome=Welcome To Login!
login.userName=UserName
login.password=Password
login.success=Login success
login.submit=Submit


loginResource_zh_CN.properties
login.title=\u4E2D\u6587\u9875\u9762
login.welcome=\u6B22\u8FCE\u767B\u9646
login.userName=\u767B\u5F55\u8D26\u53F7
login.password=\u767B\u5F55\u5BC6\u7801
login.success=\u767B\u5F55\u6210\u529F
login.submit=\u786E\u8BA4\u767B\u5F55


下面是两个页面视图
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
   <title><s:text name="login.title" ></s:text></title>
</head>
<body>
  <a href="lang.action?request_locale=zh_CN">中文</a>
  <a href="lang.action?request_locale=en_US">English</a>
  <s:form action="succ.action" method="post">
<s:textfield name="userName" key="login.userName">
</s:textfield>
<s:textfield name="password" key="login.password">
</s:textfield>
<s:submit key="login.submit">
</s:submit>
  </s:form>
</body>
</html>


success.jps
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <title><s:text name="login.success"/></title>
  </head>
  <body>
    <%=request.getAttribute("userName")%>:<s:text name="login.welcome"/>
  </body>
</html>




JSP页面中语言更改链接,用户选择某种语言链接时,超级链接就会传递一个request_locale值给Action。而这个值会
自动被i18n拦截器所读取,i18n根据这个值设置新的语言环境。

struts2实现用户自行选择语言

标签:struts2实现用户自行选择语言

原文地址:http://blog.csdn.net/qq_20545159/article/details/45697413

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!