天天看點

國際化提示資訊

在上面的資料校驗中,所有的提示資訊都是通過寫死的方式寫在配置檔案中的,這種方式顯然不利于程式國際化。

當檢視每個校驗檔案時,發現每個<field-validator .../>元素都包含了一個必填的<message .../>子元素,這個子元素中的内容就是校驗失敗後的提示資訊。為了國際化該提示資訊,為message元素指定key屬性,該key屬性指定是國際化提示資訊對應的key。

例如,我們将前面的birth字段的校驗規則改為如下配置。

程式清單:codes\04\4.2\I18NValidate\WEB-INF\src\org\crazyit\app\action\RegistAction-validation.xml

<?xml version="1.0" encoding="GBK"?>

<!-- 指定校驗配置檔案的DTD資訊 -->

<!DOCTYPE validators PUBLIC

<!-- 校驗檔案的根元素 -->

<validators>

     <!-- 校驗Action的name屬性 -->

          <!-- 指定name屬性必須滿足必填規則 -->

<b>               </b>

          &lt;!-- 指定name屬性必須比對正規表達式 --&gt;

     &lt;!-- 校驗Action的pass屬性 --&gt;

          &lt;!-- 指定pass屬性必須滿足必填規則 --&gt;

          &lt;!-- 指定pass屬性必須滿足比對指定的正規表達式 --&gt;

     &lt;!-- 指定age屬性必須在指定範圍内--&gt;

     &lt;!-- 指定birth屬性必須在指定範圍内--&gt;

               &lt;!-- 下面指定日期字元串時,必須使用本Locale的日期格式 --&gt;

&lt;/validators&gt;

上面的粗體字代碼并未直接給出message的内容,而是指定了一個key屬性,表明當birth字段違反該校驗規則時,對應的提示資訊是key為birth.range的國際化消息。

本應用的校驗檔案中指定了許多國際化資訊的key,是以必須在國際化資源檔案中增加對應的key,即在國際化資源檔案中增加如下Entry。

程式清單:codes\04\4.2\I18NValidate\WEB-INF\src\mess.properties

#違反使用者名必須輸入的提示資訊

name.requried=您必須輸入使用者名!

#違反使用者名必須比對正規表達式的提示資訊

name.regex=您輸入的使用者名隻能是字母和數字,且長度必須在4到25之間!

#違反密碼必須輸入的提示資訊

pass.requried=您必須輸入密碼!

#違反密碼必須比對正規表達式的提示資訊

pass.regex=您輸入的密碼隻能是字母和數字,且長度必須在4到25之間!

#違反年齡必須在指定範圍的提示資訊

age.range=您的年齡必須在${min}和${max}之間!

#違反生日必須在指定範圍的提示資訊

birth.range=您的生日必須在${min}和${max}之間!

運作上面的程式,即可看到輸入校驗的提示資訊變為國際化資源檔案提供的消息,這就實作了錯誤提示消息的國際化。

本文轉自 

fkJava李剛 51CTO部落格,原文連結:http://blog.51cto.com/javaligang/875486 ,如需轉載請自行聯系原作者

繼續閱讀