10.struts2國際化(struts2筆記)

一、普通java工程實現(xiàn)國際化(工程struts2_3100_I18N_Test

首先在src下存放國際化文件
app_en_US.properties

welcome.msg=hello,sir

app_zh_CN.properties

welcome.msg=\u6B22\u8FCE\u4F60\uFF01

我們使用一個普通的java程序進行測試:
Test.java

package com.bjsxt;
import java.util.Locale;
import java.util.ResourceBundle;

public class Test {
    public static void main(String[] args) {
        ResourceBundle res = ResourceBundle.getBundle("app", Locale.US);
        System.out.println(res.getString("welcome.msg" ));
    }
}

說明:我們這里在方法getBundle中的第一個參數(shù)是填寫資源文件的開頭部分,資源文件中的第二部分(如en)表示語言,第三部分(如US)表示國家。方法的第二個參數(shù)選擇國家。

二、struts2中的國際化(工程struts2_3200_BBS2009_08_I18N

struts2中國際化分為三個級別,分別是action級、package級、工程級,作用范圍依次變大,但是一般我們都使用工程級。

2.1 action級和package級國際化

這兩種方式一般不太用,這里不詳細講。
需要明白的是action級的資源文件寫法一般為LoginAction_en_US.propertiesLoginAction_zh_CN.properties,這里名字的第一部分最好和action的名字相同,這個級別的國際化資源文件只能給對應(yīng)的action使用。而package級別的資源文件的名字一般為package_en_US.propertiespackage_zh_CN.properties,注意第一部分一定要是package。這兩類資源文件都放在action包中。

2.2 工程級國際化

此時資源文件一般放在src目錄下。
bbs2009_en_US.properties

login.username=username:
login.password=password:
login.login=login
welcome.msg=welcome\:{0}

bbs2009_zh_CN.properties

login.username=\u7528\u6237\u540D\uFF1A
login.password=\u5BC6  \u7801\uFF1A
login.login=\u767B\u5F55
welcome.msg=\u6B22\u8FCE\u4F60\uFF1A{0}

這里以登錄為例:
LoginAction.java

package com.bjsxt.bbs2009.action;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
    
    private String username;
    private String password;

    public String login() throws Exception {
        
        return "success";
    }
    
    public String input() {
        return "input";
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }
    
    public void setPassword(String password) {
        this.password = password;
    }
}

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.custom.i18n.resources" value="bbs2009"></constant>
    <package name="admin" namespace="/admin" extends="struts-default" >
        <default-action-ref name="index"/>
        
        <action name="index">
            <result>/admin/index.html</result>
        </action>
        
        <action name="*_*" class="com.bjsxt.bbs2009.action.{1}Action" method="{2}">
            <result>/admin/{1}_{2}.jsp</result>
            <result name="input">/admin/{1}_{2}.jsp</result>
        </action>
    </package>
    
    <package name="front" namespace="/" extends="struts-default" >
        <default-action-ref name="Category_list"/><!-- 默認訪問此界面 -->
        <action name="Category_list" class="com.bjsxt.bbs2009.action.CategoryAction" method="list">
            <result>/index.jsp</result>
        </action>
    </package>
</struts>

Login_input.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Login_input</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    

  </head>
  
  <body>
    <form action="admin/Login-login" method="post">
        <!-- 注意取得資源文件內(nèi)容的寫法 -->
        <s:property value="getText('login.username')"/><input name="username" />
        <s:property value="getText('login.password')"/><input name="password" type="password" />
        <input type="submit" value="<s:property value="getText('login.login')"/>" /> 
    </form>
    <s:debug></s:debug>
  </body>
</html>

Login_login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Login_login</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    

  </head>
  
  <body>
    歡迎您:<s:property value="username"/>
    <s:text name="welcome.msg">
        <s:param value="username"></s:param>
    </s:text>
  </body>
</html>

說明:

  • 1.首先在配置文件中我們需要配置資源文件:
<constant name="struts.custom.i18n.resources" value="bbs2009"></constant>

其中value值是資源文件名字的第一部分。

  • 2.在輸入頁面中我們?nèi)≈档姆椒ㄊ?/li>
value="getText('login.username')"
  • 3.在登錄成功后的頁面(Login_login.jsp)中我們?nèi)〉糜脩裘沁@個名字我們是不能在資源文件中寫死的,所以我們采用動態(tài)指定。
  • 4.有時候我們可以看到有一種網(wǎng)站,當我們點擊鏈接就會將整個網(wǎng)站的語言變換。
    我們在Login_input.jsp中加上兩個鏈接:
<a href="admin/lang?request_locale=en_US">en</a>
  <a href="admin/lang?request_locale=zh_CN">cn</a>

其中l(wèi)ang是action的name屬性值,提交到特定的action去處理。

最后:
這個內(nèi)容在以后的開發(fā)中用的較少,這里不多說。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 目錄 1. Struts2國際化 1.1 資源包的編寫 1.2 國際化配置 1.3 在struts2中國際化操作可...
    深海魚Q閱讀 444評論 0 1
  • 目錄 1. 什么是Struts2 2. Struts2下載 3. Struts2的目錄結(jié)構(gòu) 4. Struts2中...
    深海魚Q閱讀 997評論 0 16
  • 概述 Struts就是基于mvc模式的框架!(struts其實也是servlet封裝,提高開發(fā)效率!) Strut...
    奮斗的老王閱讀 2,986評論 0 51
  • 最近我的微信添加了幾位新朋友,這幾位都有一個共同特點,那就是我認為他們都是比我牛的人。 不得不感慨一下新技術(shù)為普羅...
    郭來輝閱讀 248評論 0 0
  • 下午,隔壁賈喊我去吃雞。她的準媳婦特地送了一份“叫個雞”表孝敬,我們順便分享。 一塊下肚,勾起了饞蟲,忍不住美團了...
    逛街的馬閱讀 191評論 0 0