日期:2014-05-20  浏览次数:20946 次

在struts2中对action的验证如何国际化
LoginAction.java
LoginAction-validation.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE validators PUBLIC
  "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
  "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="name">
<field-validator type="requiredstring">
<message>账号不能为空!</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<message>密码不能为空!</message>
</field-validator>
</field>

</validators>
有中文message标签。
如何国际化???谢谢!


------解决方案--------------------
探讨
我知道了。是在message标签里有一个key属性,就是对应国际化文件对应的键值。
<message key="loginaction.name">账号不能为空! </message>

------解决方案--------------------
struts2的国际化实现方法
LangSelector.jsp

<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<script type="text/javascript">
<!--
function langSelecter_onChanged() {
document.langForm.submit();
}
//-->
</script>
</head>
<body>
<s:set name="SESSION_LOCALE" value="#session['WW_TRANS_I18N_LOCALE']" />
<s:bean id="locales" name="tutorial.Locales" />
<form action="<s:url includeParams="get" encode="true"/>"
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>
</body>
</html>

HelloWorld.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Hello World</title>
<s:include value="/LangSelector.jsp"/>
</head>
<body>
<h2>
<s:text name="HelloWorld" />
</h2>
<h2>
<s:property value="%{getText('HelloWorld')}" />
</h2>
</body>
</html>

Locales.java

package tutorial;
import java.util.Hashtable;
import java.util.Locale;
import java.util.Map;
public class Locales {
public Map<String, Locale> getLocales() {
Map<String, Locale> locales =new Hashtable<String, Locale>(2);
locales.put("American English", Locale.US);
locales.put("Simplified Chinese", Locale.CHINA);
return locales;
}
}

struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">