<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ☆藍色夢想☆

    世界總是反反覆覆錯錯落落地飄去 來不及嘆息 生活不是平平淡淡從從容容的東西 不能放棄
    posts - 57, comments - 5, trackbacks - 0, articles - 0

    關于struts國際化的一點嘗試

    Posted on 2006-02-27 14:51 ☆藍色夢想☆ 閱讀(327) 評論(0)  編輯  收藏 所屬分類: Struct

    1、修改web.xml文件,內容如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "<web-app>
        <servlet>
            <servlet-name>action</servlet-name>
            <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
            <init-param>
                <param-name>config</param-name>
                <param-value>/WEB-INF/struts-config.xml</param-value>
            </init-param>
            <init-param>
               <param-name>application</param-name>
               <param-value>com.sharp.struts.ApplicationResources</param-value>
             </init-param>

            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>action</servlet-name>
            <url-pattern>*.do</url-pattern>
        </servlet-mapping>
    </web-app>

    文件中灰色背景部分為國際化需要增加的內容,其中com.sharp.struts.ApplicationResources跟你的WEB-INF目錄下classes下的目錄結構是一致的,如下圖所示
    web-xml.jpg

    2、建立資源文件ApplicationResources.source(中文源文件,而不是中文資源文件)、ApplicationResources_en.properties(英文資源文件)。
    首先建立ApplicationResources_en.properties文件,內容如下:
    owner.greet=Greet
    owner.name=Name
    owner.address=Address
    owner.email=Email
    owner.tel=Tel

    對應的中文源文件內容如下:
    owner.greet=稱呼
    owner.name=姓名
    owner.address=地址
    owner.email=電子郵件
    owner.tel=聯系電話

    然后通過在cmd中執行native2ascii -encoding GBK ApplicationResources.source .\ApplicationResources_zh_CN.properties
    命令將中文源文件生成UTF-8格式的中文資源文件,內容如下
    owner.greet=\u79f0\u547c
    owner.name=\u59d3\u540d
    owner.address=\u5730\u5740
    owner.email=\u7535\u5b50\u90ae\u4ef6
    owner.tel=\u8054\u7cfb\u7535\u8bdd
    這里介紹一下,native2ascii是JDK包自帶的一個工具,如果你不能cmd直接執行native2ascii命令,請檢查你的環境變量,這里不具體介紹了。

    3、接著來介紹一下struts-config.xml文件的內容,如果熟悉struts的朋友也覺得很簡單的
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "
    <struts-config>
        <!-- ========== Form Bean Definitions ================================== -->
        <form-beans>
            <form-bean name="ownerForm" type="com.sharp.struts.form.OwnerForm">
                <form-property name="Email" type="java.lang.String" />
                <form-property name="Greet" type="java.lang.String" initial="Mr." />
                <form-property name="Address" type="java.lang.String" />
                <form-property name="Tel" type="java.lang.Integer" initial="0" />
                <form-property name="Name" type="java.lang.String" />
            </form-bean>
           
        </form-beans>
       
        <!-- ========== Global Exception Definitions ============================== -->
        <global-exceptions />
       
        <!-- ========== Global Forward Definitions =============================== -->
        <global-forwards>
            <forward name="failure" path="/failure.jsp" />
           
        </global-forwards>
       
        <!-- ========== Action Mapping Definitions =============================== -->
        <action-mappings>
            <action
                attribute="ownerForm"
                input="/owner.jsp"
                name="ownerForm"
                path="/owner"
                type="com.sharp.struts.action.OwnerAction"
                parameter="formAction"><!--因為action類繼承DispatchAction類,所以需要設置這個屬性-->
                <forward name="owner"   path="/owner.jsp" />
                <forward name="success" path="/success.jsp" />
            </action>

           
        </action-mappings>
       
    </struts-config>

    4、現在就開始準備java和jsp文件吧
    owner.jsp文件內容如下:
    <%@ page contentType="text/html;charset=gb2312" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
    <html:html locale="true">
     <head>
      <meta name = "Generator" content = "Easy Struts Xslt generator for Eclipse (
      <title>Struts Form for ownerForm</title>
      <script language="javascript">
          function changeLanguage(language) {
              if(language == "en") {
                  document.all("language").value = "en";
              } else {
                  document.all("language").value = "cn";
              }
              document.forms[0].submit();
          }
      </script>
     </head>
     <body>
      <html:form action="/owner">
      <input type="hidden" name="formAction" value="changeLanguage">
      <input type="hidden" name="language">

       <bean:message key="owner.greet" /> : <html:select property="greet">
          <html:option value=""></html:option>
          <html:option value="Mr.">Mr.</html:option>
          <html:option value="Miss.">Miss.</html:option>
          <html:option value="Mrs.">Mrs.</html:option>
         </html:select><html:errors property="greet"/></br>   
       <bean:message key="owner.name" /> : <html:text property="name"/><html:errors property="name"/></br>
       <bean:message key="owner.address" /> : <html:text property="address"/><html:errors property="address"/></br>
       <bean:message key="owner.email" /> : <html:text property="email"/><html:errors property="email"/></br>
       <bean:message key="owner.tel" /> : <html:text property="tel"/><html:errors property="tel"/></br>
       <html:submit/>
       <html:cancel/>
       <input type="button" name="langEn" value="英文版" onclick="changeLanguage('en')">   
       <input type="button" name="langCn" value="中文版" onclick="changeLanguage('cn')">
      </html:form>
     <body>
    </html:html>

    OwnerAction.java文件內容如下:
    // Created by Xslt generator for Eclipse.
    // XSL :  not found (java.io.FileNotFoundException:  (Bad file descriptor))
    // Default XSL used : easystruts.jar$org.easystruts.xslgen.JavaClass.xsl

    package com.sharp.struts.action;

    import java.util.Locale;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.apache.struts.Globals;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.actions.DispatchAction;

    import com.sharp.struts.form.OwnerForm;

    /**
     * OwnerAction.java created by EasyStruts - XsltGen.
     *
    http://easystruts.sf.net
     * created on 10-09-2004
     *
     * XDoclet definition:
     * @struts:action path="/owner" name="ownerForm" input="/owner.jsp" validate="true"
     * @struts:action-forward name="/success.jsp" path="/success.jsp"
     */
    public class OwnerAction extends DispatchAction {

     
     public ActionForward changeLanguage(
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response) {

       String language = request.getParameter("language");   
       if (language.equals("en")) {
            request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.ENGLISH);    
       } else {    
            request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.CHINESE);
       }
       
            return mapping.findForward("owner");
        }
    }
    這里需要注意一下,千萬不要弄錯,我在這里就花費了一個多小時,因為把文件名寫錯了
    Locale.ENGLISH是一個Locale對象,getLanguage()方法返回en,跟資源文件(ApplicationResources_en.properties)的后綴相同
    Locale.CHINESE是一個Locale對象,getLanguage()方法返回zh,跟資源文件(ApplicationResources_zh_CN.properties)的后綴相同


    另外還用到一個ownerForm.java文件,內容如下:
    // Created by Xslt generator for Eclipse.
    // XSL :  not found (java.io.FileNotFoundException:  (Bad file descriptor))
    // Default XSL used : easystruts.jar$org.easystruts.xslgen.JavaClass.xsl

    package com.sharp.struts.form;

    import javax.servlet.http.HttpServletRequest;

    import org.apache.struts.action.ActionError;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;

    /**
     * OwnerForm.java created by EasyStruts - XsltGen.
     * http://easystruts.sf.net
     * created on 10-09-2004
     *
     * XDoclet definition:
     * @struts:form name="ownerForm"
     */
    public class OwnerForm extends ActionForm {

     // --------------------------------------------------------- Instance Variables

     /** Email property */
     private String email;

     /** Greet property */
     private String greet = "Mr.";

     /** Address property */
     private String address;

     /** Tel property */
     private int tel = 0;

     /** Name property */
     private String name;
     // --------------------------------------------------------- Methods
    ......
    //getter,setter mothod,這里不贅列了

    }

    5、總結
    這樣一個國際化的小例子就可以運行了,不過上面寫得比較粗略,需要對java和struts有一定了解。
    網上對國際化也有其他的做法,也可以參考。
    如果上述有所偏頗,敬請斧正。

    主站蜘蛛池模板: 免费看美女被靠到爽| 91成人免费在线视频| 亚欧乱色国产精品免费视频| 一级毛片成人免费看a| 国产综合免费精品久久久| 热re99久久6国产精品免费| 无限动漫网在线观看免费| 热99re久久精品精品免费| 亚洲三级高清免费| 人妻18毛片a级毛片免费看| 91香蕉在线观看免费高清| 免费人成在线观看视频播放| 亚洲国产另类久久久精品| 亚洲伊人久久大香线蕉| 男女猛烈激情xx00免费视频| 99精品免费观看| 91亚洲精品自在在线观看| 无码人妻久久一区二区三区免费丨 | 亚洲网站免费观看| 狠狠色婷婷狠狠狠亚洲综合 | 国产精品视频白浆免费视频| 一个人免费观看www视频在线| 亚洲人成电影在线观看青青| 日韩成全视频观看免费观看高清 | 亚洲日本韩国在线| avtt天堂网手机版亚洲| 成人电影在线免费观看| 亚洲国产精品综合久久一线| 亚洲熟妇无码八V在线播放| 亚洲精品免费在线观看| 亚洲日韩精品一区二区三区无码 | 亚洲熟女精品中文字幕| 亚洲日本一区二区一本一道| 毛片在线全部免费观看| 区久久AAA片69亚洲| 福利片免费一区二区三区| 国产一卡2卡3卡4卡无卡免费视频 国产一卡二卡3卡四卡免费 | 亚洲av最新在线观看网址| 国产成人精品久久免费动漫| 久久亚洲春色中文字幕久久久 | 免费人成视网站在线观看不卡|