您的位置:首页 > 编程语言 > Java开发

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步:发布运行程序,测试效果图如下:



本项目下载地址:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: