struts2的国际化

1.整个项目目录如下


2.action中的内容如下
UserAction.java
package com.qbd.duan.i18n.action;
import java.util.Locale;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.qbd.duan.i18n.model.User;
public class UserAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private User user;
private String languageName;
public String execute() throws Exception {
HttpSession session = ServletActionContext.getRequest().getSession();
Locale l;
if(languageName==null)
{
l = Locale.CHINA;
}else{
if (languageName.equals("zh_CN")) {
l = Locale.CHINA;
} else {
l = Locale.US;
}
}
ActionContext.getContext().setLocale(l);
session.setAttribute("WW_TRANS_I18N_LOCALE", l);
return "input";
}
public String getLanguageName() {
return languageName;
}
public void setLanguageName(String languageName) {
this.languageName = languageName;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user=user;
}
}

如果想加校验器的可以写下面的两个代码
RegisterAction-register-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
  "-//Apache Struts//XWork Validator 1.0.3//EN"
  "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<field name="user">
<field-validator type="visitor">
<param name="context">Reg</param>
<param name="addpendPrefix">true</param>
<message>用户注册:</message>
</field-validator>
</field>
</validators>

User-Reg-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
  "-//Apache Struts//XWork Validator 1.0.3//EN"
  "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<!-- name值为需要被校验的字段,这里对email字段进行校验 -->
<field name="name">
<field-validator type="fieldexpression" short-circuit="true">
<param name="expression"><![CDATA[([0-9a-zA-Z]{6,20})]]></param>
<message key="error1"></message>  
</field-validator>
</field>
<field name="password">
<field-validator type="fieldexpression" short-circuit="true">
<param name="expression"><![CDATA[([0-9a-zA-Z]{6,20})]]></param>
<message key="error2"></message>
</field-validator>
</field>            
</validators>

接下来是实体类在model中
User.java
package com.qbd.duan.i18n.model;
import java.io.Serializable;
public class User implements Serializable{
private static final long serialVersionUID = 1L;
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

然后是英文的 Message_en_US.properties
name=Username
passwrod=password
login=login
error1=name again between 6-20
error2=Password again between 6-20


然后是中文的Message_zh_CN.properties
name=\u7528\u6237\u540D
password=\u5BC6\u7801
login=\u767B\u9646
error2=\u5BC6\u7801\u518D\u57286-20\u4E4B\u95F4
error1=\u7528\u6237\u540D\u57286-20\u4E4B\u95F4


然后配置struts的配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.locale" value="zh_CN" />
<constant name="struts.custom.i18n.resources" value="Message"></constant>
<package name="default" namespace="/" extends="struts-default">
<action name="register" class="com.qbd.duan.i18n.action.UserAction">
<result name="success">success.jsp</result>
<result name="input">register.jsp</result>
</action>
</package>
</struts>


测试页面
register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 加载i18n资源文件 -->
<s:i18n name="Message" />
<s:a href="register.action?languageName=zh_CN">
<s:text name="中文" />
</s:a>
<s:a href="register.action?languageName=en_US">
<s:text name="english" />
</s:a>
<br>
<br>


<s:textfield name="user.name" label="%{getText('name')}" />
<br>
<td><s:fielderror fieldName="user.name" /></td>
<br>
<s:password name="user.password" label="%{getText('password')}" />
<br>
<td><s:fielderror fieldName="user.password" /></td>
<br>
<a href="register.action"><s:property value="getText('login')" /></a>
</body>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值