S6.6_Struts2_I18n 项目如何实现国际化 I18n
2016-12-17 20:33
741 查看
我们接下来将要创建的项目目录结构如下:
由项目S6.3_Struts2_Validation(如何下载它)复制生成一个新项目S6.6_Struts2_I18n
项目如何实现国际化 I18n
第1步:建资源文件(包名_语言_国家.properties)
App_en_US.properties
App_zh_CN.properties
第2步:在src/struts.xml配置文件中,配置红色字体标识的代码:
<?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.devMode" value="true" ></constant>
<constant name="struts.i18n.encoding" value="utf-8" ></constant>
<constant name="struts.custom.i18n.resources" value="App"></constant>
<!-- 父包default -->
<package name="default" namespace="" extends="struts-default">
<global-results>
<result name="login_success">/login_success.jsp</result>
<result name="login_failure">/login_failure.jsp</result>
<result name="error">/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>
<action name="exit">
<result>/login.jsp</result>
</action>
<action name="language">
<result>/login.jsp</result>
</action>
</package>
<!-- 子包user继承于父包default -->
<package name="user" namespace="/user" extends="default">
<global-results>
<result>/user/result.jsp</result>
</global-results>
<action name="login*" class="net.nw.action.UserAction{1}">
<result name="input">/login.jsp</result>
</action>
<action name="*_*" class="net.nw.action.{1}Action4" method="{2}">
</action>
</package>
<include file="admin.xml"></include>
<package name="test" namespace="" extends="default">
<action name="test1" class="net.nw.action.TestAction1">
<!-- 默认result类型等于dispatcher -->
<result>/test/test1.jsp</result>
</action>
<action name="test2" class="net.nw.action.TestAction2">
<!-- result类型等于redirect -->
<result type="redirect">/test/test2.jsp</result>
</action>
<action name="test3" class="net.nw.action.TestAction1">
<!-- result类型等于chain -->
<result type="chain">test2</result>
</action>
<action name="test4" class="net.nw.action.TestAction2">
<!-- result类型等于redirectAction -->
<result type="redirectAction">test1</result>
</action>
<action name="test5" class="net.nw.action.TestAction2">
<!-- result类型等于plainText -->
<result type="plainText">/test/test2.jsp</result>
</action>
</package>
<package name="error" namespace="" extends="default">
<action name="**">
<result>/error.jsp</result>
</action>
</package>
</struts>
第3步:在WebRoot/login.jsp页面文件中,演示一下红色字体标识的部分标签国际化处理
<%@ page language="java" import="java.util.*" %>
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>系统登录</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<center>
<h1>系统登录</h1>
<hr>
<pre>
<a href="<%=path%>/language.action?request_locale=en_US">English</a> <a href="<%=path%>/language.action?request_locale=zh_CN">Simplified Chinese</a>
</pre>
<s:fielderror cssStyle="color:red"/><br>
<form name="loginForm" action="" method="post" >
<s:property value="getText('label.username')"/>:<input type="text" name="username"/><s:fielderror fieldName="username_error" cssStyle="color:red"/><br>
<s:property value="getText('label.password')"/>:<input type="password" name="password"/><s:fielderror fieldName="password_error" cssStyle="color:red"/><br>
<s:property value="getText('label.email')"/>:<input type="text" name="email"/><s:fielderror fieldName="email_error" cssStyle="color:red"/><br>
<input type="button" value="登录1" onclick="javascript:document.loginForm.action='<%=path%>/user/login1.action';document.loginForm.submit();"/><br>
<input type="button" value="登录2" onclick="javascript:document.loginForm.action='<%=path%>/user/login2.action';document.loginForm.submit();"/><br>
<input type="button" value="登录3" onclick="javascript:document.loginForm.action='<%=path%>/user/login3.action';document.loginForm.submit();"/><br>
<input type="button" value="登录4" onclick="javascript:document.loginForm.action='<%=path%>/user/login4.action';document.loginForm.submit();"/><br>
<br>
<br><a href="<%=path%>/test_result.jsp">测试ResultType</a>
<br><a href="<%=path%>/admin/login.action">管理员登录</a>
</form>
</center>
</body>
</html>
第4步:找到net.nw.action包,国际化配置文件UserAction2-validation.xml
<!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="username_error">
<field-validator type="requiredstring">
<!-- <message>用户名称不能为空</message> -->
<message>
${getText("login.field.isnull",{getText("label.username")})}
</message>
</field-validator>
</field>
<field name="password_error">
<field-validator type="requiredstring">
<!-- <message>密码不能为空</message> -->
<message>
${getText("login.field.isnull",{getText("label.password")})}
</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">4</param>
<param name="maxLength">6</param>
<!-- <message>密码必须是4-6位</message> -->
<message key="login.password.lengtherror"></message>
</field-validator>
</field>
<field name="email_error">
<field-validator type="requiredstring">
<!-- <message>电子邮件不能为空</message> -->
<message key="login.email.isnull"></message>
</field-validator>
<field-validator type="email">
<!-- <message>电子邮箱格式不正确</message> -->
<message key="login.email.formaterror"></message>
</field-validator>
</field>
</validators>
第5步:发布运行程序,测试效果图如下:
本项目下载地址:
由项目S6.3_Struts2_Validation(如何下载它)复制生成一个新项目S6.6_Struts2_I18n
项目如何实现国际化 I18n
第1步:建资源文件(包名_语言_国家.properties)
App_en_US.properties
App_zh_CN.properties
第2步:在src/struts.xml配置文件中,配置红色字体标识的代码:
<?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.devMode" value="true" ></constant>
<constant name="struts.i18n.encoding" value="utf-8" ></constant>
<constant name="struts.custom.i18n.resources" value="App"></constant>
<!-- 父包default -->
<package name="default" namespace="" extends="struts-default">
<global-results>
<result name="login_success">/login_success.jsp</result>
<result name="login_failure">/login_failure.jsp</result>
<result name="error">/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>
<action name="exit">
<result>/login.jsp</result>
</action>
<action name="language">
<result>/login.jsp</result>
</action>
</package>
<!-- 子包user继承于父包default -->
<package name="user" namespace="/user" extends="default">
<global-results>
<result>/user/result.jsp</result>
</global-results>
<action name="login*" class="net.nw.action.UserAction{1}">
<result name="input">/login.jsp</result>
</action>
<action name="*_*" class="net.nw.action.{1}Action4" method="{2}">
</action>
</package>
<include file="admin.xml"></include>
<package name="test" namespace="" extends="default">
<action name="test1" class="net.nw.action.TestAction1">
<!-- 默认result类型等于dispatcher -->
<result>/test/test1.jsp</result>
</action>
<action name="test2" class="net.nw.action.TestAction2">
<!-- result类型等于redirect -->
<result type="redirect">/test/test2.jsp</result>
</action>
<action name="test3" class="net.nw.action.TestAction1">
<!-- result类型等于chain -->
<result type="chain">test2</result>
</action>
<action name="test4" class="net.nw.action.TestAction2">
<!-- result类型等于redirectAction -->
<result type="redirectAction">test1</result>
</action>
<action name="test5" class="net.nw.action.TestAction2">
<!-- result类型等于plainText -->
<result type="plainText">/test/test2.jsp</result>
</action>
</package>
<package name="error" namespace="" extends="default">
<action name="**">
<result>/error.jsp</result>
</action>
</package>
</struts>
第3步:在WebRoot/login.jsp页面文件中,演示一下红色字体标识的部分标签国际化处理
<%@ page language="java" import="java.util.*" %>
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>系统登录</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<center>
<h1>系统登录</h1>
<hr>
<pre>
<a href="<%=path%>/language.action?request_locale=en_US">English</a> <a href="<%=path%>/language.action?request_locale=zh_CN">Simplified Chinese</a>
</pre>
<s:fielderror cssStyle="color:red"/><br>
<form name="loginForm" action="" method="post" >
<s:property value="getText('label.username')"/>:<input type="text" name="username"/><s:fielderror fieldName="username_error" cssStyle="color:red"/><br>
<s:property value="getText('label.password')"/>:<input type="password" name="password"/><s:fielderror fieldName="password_error" cssStyle="color:red"/><br>
<s:property value="getText('label.email')"/>:<input type="text" name="email"/><s:fielderror fieldName="email_error" cssStyle="color:red"/><br>
<input type="button" value="登录1" onclick="javascript:document.loginForm.action='<%=path%>/user/login1.action';document.loginForm.submit();"/><br>
<input type="button" value="登录2" onclick="javascript:document.loginForm.action='<%=path%>/user/login2.action';document.loginForm.submit();"/><br>
<input type="button" value="登录3" onclick="javascript:document.loginForm.action='<%=path%>/user/login3.action';document.loginForm.submit();"/><br>
<input type="button" value="登录4" onclick="javascript:document.loginForm.action='<%=path%>/user/login4.action';document.loginForm.submit();"/><br>
<br>
<br><a href="<%=path%>/test_result.jsp">测试ResultType</a>
<br><a href="<%=path%>/admin/login.action">管理员登录</a>
</form>
</center>
</body>
</html>
第4步:找到net.nw.action包,国际化配置文件UserAction2-validation.xml
<!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="username_error">
<field-validator type="requiredstring">
<!-- <message>用户名称不能为空</message> -->
<message>
${getText("login.field.isnull",{getText("label.username")})}
</message>
</field-validator>
</field>
<field name="password_error">
<field-validator type="requiredstring">
<!-- <message>密码不能为空</message> -->
<message>
${getText("login.field.isnull",{getText("label.password")})}
</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">4</param>
<param name="maxLength">6</param>
<!-- <message>密码必须是4-6位</message> -->
<message key="login.password.lengtherror"></message>
</field-validator>
</field>
<field name="email_error">
<field-validator type="requiredstring">
<!-- <message>电子邮件不能为空</message> -->
<message key="login.email.isnull"></message>
</field-validator>
<field-validator type="email">
<!-- <message>电子邮箱格式不正确</message> -->
<message key="login.email.formaterror"></message>
</field-validator>
</field>
</validators>
第5步:发布运行程序,测试效果图如下:
本项目下载地址:
相关文章推荐
- vue项目如何实现国际化?分享一下基于vue-i18n实现国际化的经验
- Struts2 关于i18n国际化的问题,可点击链接实现中英文切换
- springMVC项目国际化(i18n)实现方法
- Android Studio如何实现项目国际化
- struts2如何触底实现国际化
- Struts2 关于i18n国际化的问题,可点击链接实现中英文切换
- 浅析如何利用angular结合translate为项目实现国际化
- vue项目中如何实现国际化
- vue项目中vue-i18n和element-ui国际化开发实现过程
- SpringMVC项目国际化(i18n)实现方法
- Asp.net项目基于jQuery.i18n.properties 实现前端页面的资源国际化
- 如何实现 Spring MVC i18n 国际化,动态设置默认语言
- Struts2开发-i18n国际化实现案例-登录页面
- (三)Struts2国际化(i18n) :简单语言包的实现
- Struts2 关于i18n国际化的问题,可点击链接实现中英文切换
- php 通过include方式实现国际化多语言(i18n)
- struts如何实现国际化(转)
- struts2的国际化(i18n)操作
- Hk项目总结2:strts2 radio标签国际化的实现 s:radio
- Web框架——Struts2国际化实现用户自行选择语言