日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用 Struts 2 实现国际化

發(fā)布時間:2023/12/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 Struts 2 实现国际化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

https://www.cnblogs.com/likailan/p/3307409.html

struts2國際化(I18N)

  國際化也叫I18N,是Internationalization的簡稱。Struts2國際化是建立在Java國際化基礎(chǔ)上,只是Struts2框架對Java國際化進(jìn)行了進(jìn)一步封裝,從而簡化了應(yīng)用程序的國際化。

使用struts2 實(shí)現(xiàn)國際化

在上一次的”使用 Struts2 校驗(yàn)器校驗(yàn)用戶注冊信息“項(xiàng)目為基礎(chǔ)上實(shí)現(xiàn)國際化:http://www.cnblogs.com/likailan/p/3302284.html

?

一、在strute.xml中指定資源文件的基名。

在strute.xml文件的struts標(biāo)簽里加入如下代碼:

<constant name="struts.custom.i18n.resources" value="message"/><constant name="struts.i18n.encoding" value="UTF-8" />

通過“struts.custom.i18n.resources”屬性指定國際化資源文件的基名為“message”,位于src目錄下。如果屬性值為“cn.jbit.message”,則資源文件的基名仍是“message”,但位于“cn.jbit”包中。還可以通過“struts.i18n.encoding”屬性指定默認(rèn)的編碼方案。如果要進(jìn)行國際化,必須指定為“UTF-8”。

二、創(chuàng)建資源文件,用來存放相應(yīng)的資源

資源文件為properties文件,命名規(guī)則為:基名 _語言代號_地區(qū)代號.properties。基名就是第一步里設(shè)置的“message”。語言代號和地區(qū)代號可以在IE里查看:打開IE->打開internet選項(xiàng)->點(diǎn)擊語言->點(diǎn)擊添加,可以看到如下“添加語言”對話框,里面就有顯示各種語言和地區(qū)的代號:

在src目錄下添加分別為 中文-中國 和 英文-美國 的資源文件。那么對應(yīng)的文件名就是:

中文-中國:message_zh_CN.properties

英文-美國:message_en_US.properties

message_zh_CN.properties代碼:

title=注冊 form.email=郵箱: form.password=密碼: form.repassword=重復(fù)密碼: form.phone=電話: form.submit=提交

message_en_US.properties代碼:

title=register form.email=eMail: form.password=password: form.repassword=repassword: form.phone=phone: form.submit=submit

三、實(shí)現(xiàn)JSP頁面信息的國際化顯示

把和顯示相關(guān)的文字都替換成 ?<s:text name="對應(yīng)資源文件的鍵"/> 其中屬性 name 的值為資源文件里相對應(yīng)的key。如:<s:text name="title"/> ? ? ?<s:text name="form.email"/>

頁面代碼:

1 <%@ page language="java" contentType="text/html; charset=UTF-8"2 pageEncoding="UTF-8"%>3 <!-- 加載struts2標(biāo)簽庫 -->4 <%@ taglib uri="/struts-tags" prefix="s"%>5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">6 <html>7 <head>8 <s:head/>9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 10 <!-- 把和顯示相關(guān)的文字都替換成 <s:text name="對應(yīng)資源文件的鍵"/> --> 11 <title><s:text name="title" /></title> 12 </head> 13 <body> 14 <form action="register.action" method="post"> 15 <table> 16 <tr> 17 <!-- 把和顯示相關(guān)的文字都替換成 <s:text name="對應(yīng)資源文件的鍵"/> --> 18 <td><s:text name="form.email" /></td> 19 <td><input type="text" name="email"/></td> 20 <!-- 使用<s:fielderror/>標(biāo)簽輸入相應(yīng)的字段錯誤信息 --> 21 <td><s:fielderror fieldName="email"/></td> 22 </tr> 23 <tr> 24 <!-- 把和顯示相關(guān)的文字都替換成 <s:text name="對應(yīng)資源文件的鍵"/> --> 25 <td><s:text name="form.password" /></td> 26 <td><input type="password" name="password"/></td> 27 <td><s:fielderror fieldName="password"/></td> 28 </tr> 29 <tr> 30 <td><s:text name="form.repassword" /></td><td> 31 <input type="password" name="repassword"/></td> 32 <td><s:fielderror fieldName="repassword"/></td> 33 </tr> 34 <tr> 35 <td><s:text name="form.phone" /></td> 36 <td><input type="text" name="phone"/></td> 37 <td><s:fielderror fieldName="phone"/></td> 38 </tr> 39 <tr> 40 <td><input type="submit" value="<s:text name="form.submit" />"/></td> 41 <td></td> 42 <td></td> 43 </tr> 44 </table> 45 </form> 46 </body> 47 </html>

四、測試

啟動tomcat。用IE打開register.jsp頁面。

打開internet選項(xiàng)->點(diǎn)擊語言->點(diǎn)擊添加,可以看到如下“添加語言”對話框。添加“英語(美國)[en-US]”項(xiàng),并把該項(xiàng)上移到最上層

刷新頁面:

?

?實(shí)現(xiàn)驗(yàn)證錯誤信息的國際化顯示

表單的驗(yàn)證錯誤信息也需要進(jìn)行國際化顯示,Struts 2 針對編碼驗(yàn)證和驗(yàn)證框架都提供了國際化實(shí)現(xiàn),此時驗(yàn)證錯誤信息以鍵值對的方式書寫在資源文件中,而無需直接書寫在validate方法或者驗(yàn)證配置文件中。

一、添加相應(yīng)的國際化內(nèi)容到資源文件中

message_zh_CN.properties添加如下國際化內(nèi)容:

######### 校驗(yàn)錯誤信息 ########### form.email.null=郵箱不能為空 form.email.format=郵箱格式不正確 form.password.null=密碼不能為空 form.password.length=密碼長度不能少于6位 form.repassword.same=兩次密碼不一至 form.phone.format=電話號碼格式不正確

message_en_US.properties添加如下國際化內(nèi)容:

######### 校驗(yàn)錯誤信息 ########### form.email.null=eMail cannot be null form.email.format=eMail format is error form.password.null=password cannot be null form.password.length=minimum password length is 6 form.repassword.same=repassword should be same with password form.phone.format=phone format is error

二、修改驗(yàn)證框架的配置文件

修改驗(yàn)證框架的配置文件,去掉具體的驗(yàn)證錯誤信息,通過 <message> 標(biāo)簽的key屬性指定其對應(yīng)的驗(yàn)證錯誤信息。

修改后的?RegisterAction-register-validation.xml:

1 <?xml version="1.0" encoding="UTF-8"?>2 <!DOCTYPE validators PUBLIC3 "-//Apache Struts//XWork Validator 1.0.2//EN"4 "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">5 6 <validators>7 <!-- name值為需要被校驗(yàn)的字段,這里對email字段進(jìn)行校驗(yàn) -->8 <field name="email">9 <!-- type值為校驗(yàn)器名,requiredstring:非空字符串校驗(yàn)器 --> 10 <field-validator type="requiredstring"> 11 <!-- 去掉具體的驗(yàn)證錯誤信息,通過 <message> 標(biāo)簽的key屬性指定其對應(yīng)的驗(yàn)證錯誤信息。 --> 12 <message key="form.email.null" /> 13 </field-validator> 14 <!-- 一個字段可以配置多個校驗(yàn)器,email:校驗(yàn)郵箱格式 --> 15 <field-validator type="email"> 16 <!-- 去掉具體的驗(yàn)證錯誤信息,通過 <message> 標(biāo)簽的key屬性指定其對應(yīng)的驗(yàn)證錯誤信息。 --> 17 <message key="form.email.format" /> 18 </field-validator> 19 </field> 20 21 <field name="password"> 22 <field-validator type="requiredstring"> 23 <message key="form.password.null" /> 24 </field-validator> 25 <!-- stringlength:字符串長度校驗(yàn) --> 26 <field-validator type="stringlength"> 27 <!-- 為校驗(yàn)器指定參數(shù)實(shí)現(xiàn)不同的校驗(yàn)規(guī)則,minlength:最少長度 --> 28 <param name="minLength">6</param> 29 <message key="form.password.length"/> 30 </field-validator> 31 </field> 32 33 <!-- 校驗(yàn)兩次密碼是否一致,使用 fieldexpression 校驗(yàn)器。expression參數(shù)指定判斷用的表達(dá)式 --> 34 <field name="repassword"> 35 <field-validator type="fieldexpression"> 36 <!-- 表達(dá)式要寫在 <![CDATA[]]> 內(nèi) --> 37 <param name="expression"><![CDATA[repassword==password]]></param> 38 <message key="form.repassword.same"/> 39 </field-validator> 40 </field> 41 42 <!-- 校驗(yàn)電話格式,使用regex正則表達(dá)示校驗(yàn),regexExpression參數(shù)指定正則表達(dá)式 --> 43 <field name="phone"> 44 <field-validator type="regex"> 45 <!-- 注意!2.3.15前的版本使用 expression 參數(shù) --> 46 <param name="regexExpression"><![CDATA[\d{11}]]></param> 47 <message key="form.phone.format" /> 48 </field-validator> 49 </field> 50 51 </validators>

四、測試

?

打開internet選項(xiàng)->點(diǎn)擊語言->點(diǎn)擊添加,可以看到如下“添加語言”對話框。添加“英語(美國)[en-US]”項(xiàng),并把該項(xiàng)上移到最上層。刷新頁面:

?通過超鏈接轉(zhuǎn)換頁面 語言-地區(qū)

?一、在register.jsp頁面中添加如下超連接:

<a href="changelan.action?request_locale=zh_CN">簡體中文</a>&nbsp;&nbsp;&nbsp;<a href="changelan.action?request_locale=en_US">English</a>

跳到一個名為changelan的action里,傳遞名為request_locale(固定寫化)的參數(shù),值為要換轉(zhuǎn)的?語言代號_地區(qū)代號。

二、編寫相應(yīng)的action類

ChangelanAction.java代碼:

1 import java.util.Locale;2 3 import com.opensymphony.xwork2.ActionContext;4 import com.opensymphony.xwork2.ActionSupport;5 6 7 public class ChangelanAction extends ActionSupport{8 9 public String execute() throws Exception { 10 //獲得本地默認(rèn)的語言環(huán)境 11 Locale locale=Locale.getDefault(); 12 //存入到一個session變量中。"WW-TRANS-I18N-LOCALE"為固定寫法 13 ActionContext.getContext().getSession().put("WW-TRANS-I18N-LOCALE", locale); 14 return SUCCESS; 15 } 16 17 }

三、配置struts.xml

在package標(biāo)簽內(nèi)添加如下action標(biāo)簽:

<action name="changelan" class="ChangelanAction"><result name="success">register.jsp</result> </action>

四、測試

頁面如下:

點(diǎn)擊簡體中文:

點(diǎn)擊English

總結(jié)

以上是生活随笔為你收集整理的使用 Struts 2 实现国际化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。