8.2 ? 利用配置文件進行輸入校驗方法說明
8.1 小節中說明的輸入校驗方法會讓程序產生很多代碼。如果是 1 個項目生命周期很短的項目,必然對時間的要求會很高。這時候利用 Struts2 來對該項目進行開發,開發者勢必不喜歡 8.1 小節中介紹的輸入校驗方法。因為代碼太多,工作量一下子就增大了不少。而且它是一種硬編碼的形式,增大了系統各個模塊之間的耦合度,也不利于項目后期的維護和實施。因此本節介紹的利用配置文件進行輸入校驗的方式則很好的解決了上述問題。
利用配置文件進行校驗主要是增加了一些 xml 文件來對具體表單中各個字段進行輸入校驗。當然配置文件能做的事情不止這些。其本身的輸入校驗規則的書寫格式也有字段和非字段兩種,下面筆者就來具體介紹這些知識點。
8.2.1 ? Struts2 字段校驗的配置文件形式
技術要點
Struts2 輸入校驗配置文件字段校驗格式介紹。
輸入校驗配置文件命名方式和相關注意點。
字段校驗格式和相關注意點。
演示代碼
數據輸入 JSP 代碼:
- <!---------------------文件名:register.jsp----------------> ??
- ………… ??
- ??????????????????<!--?用戶信息注冊form表單?--> ??
- ?????????<s:form?action= "Register.action" ??validate= "true" > ??
- ???????????????????<table?width= "60%" ?height= "76" ?border= "0" > ??
- ?????????????????????????????????????<!--?各標簽定義?--> ??
- ?????????????????????????????????????<s:textfield?name= "username" ?label= "用戶名" /> ??
- ?????????????????????????????????????<s:password?name= "password" ?label= "密??碼" ?/> ??
- ?????????????????????????????????????<s:password?name= "repassword" ?label= "密??碼確認" ?/> ??
- ?????????????????????????????????????<s:textfield?name= "birthday" ?label= "生日" /> ??
- ?????????????????????????????????????<s:textfield?name= "mobile" ?label= "手機號碼" /> ??
- ?????????????????????????????????????<s:textfield?name= "age" ?label= "年齡" /> ??
- ?????????????????????????????????????<s:submit?value= "注冊" ?align= "center" />?????????????????????????????? ??
- ???????????????????</table> ??
- ?????????</s:form> ??
- …………??
<!---------------------文件名:register.jsp----------------> ………… <!-- 用戶信息注冊form表單 --> <s:form action="Register.action" validate="true"> <table width="60%" height="76" border="0"> <!-- 各標簽定義 --> <s:textfield name="username" label="用戶名"/> <s:password name="password" label="密 碼" /> <s:password name="repassword" label="密 碼確認" /> <s:textfield name="birthday" label="生日"/> <s:textfield name="mobile" label="手機號碼"/> <s:textfield name="age" label="年齡"/> <s:submit value="注冊" align="center"/> </table> </s:form> …………
?
輸入校驗文件代碼:
- <!---------文件名:RegisterAction-validation.xml----------> ??
- <?xml?version= "1.0" ?encoding= "gb2312" ?> ??
- <!DOCTYPE?validators?PUBLIC ??
- "-//OpenSymphony?Group//XWork?Validator?1.0.2//EN" ??
- "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd" > ??
- <validators> ??
- ?????????<field?name= "username" > ??
- ???????????????????<!—檢驗用戶名的長度?--?> ??
- ???????????????????<field-validator?type= "stringlength" > ??
- ????????????????????????????<param?name= "minLength" > 6 </param> ??
- ????????????????????????????<param?name= "maxLength" > 8 </param> ??
- ????????????????????????????<message>用戶名長度必須在${minLength}-${maxLength}位之間</message> ??
- ???????????????????</field-validator> ??
- ???????????????????<!—檢驗用戶名是否已輸入?--?> ??
- <field-validator?type= "requiredstring" > ??
- ????????????????????????????<message>請輸入用戶名</message> ??
- ???????????????????</field-validator> ??
- ?????????</field> ??
- ?????????<field?name= "password" > ??
- ???????????????????<!—檢驗密碼的長度?--?> ??
- ???????????????????<field-validator?type= "stringlength" > ??
- ????????????????????????????<param?name= "minLength" > 6 </param> ??
- ????????????????????????????<param?name= "maxLength" > 8 </param> ??
- ????????????????????????????<message>密碼長度必須在${minLength}-${maxLength}位之間</message> ??
- ???????????????????</field-validator> ??
- <!—檢驗密碼是否已輸入?--?> ??
- ???????????????????<field-validator?type= "requiredstring" > ??
- ????????????????????????????<message>請輸入密碼</message> ??
- ???????????????????</field-validator> ??
- ?????????</field> ??
- ?????????<field?name= "repassword" > ??
- ?????????<!—檢驗確認密碼的長度?--?> ??
- ???????????????????<field-validator?type= "stringlength" > ??
- ????????????????????????????<param?name= "minLength" > 6 </param> ??
- ????????????????????????????<param?name= "maxLength" > 8 </param> ??
- ????????????????????????????<message>確認密碼長度必須在${minLength}-${maxLength}位之間</message> ??
- ???????????????????</field-validator> ??
- <!—檢驗確認密碼是否已輸入?--?> ??
- ???????????????????<field-validator?type= "requiredstring" > ??
- ????????????????????????????<message>請輸入確認密碼</message> ??
- ???????????????????</field-validator> ??
- ?????????<!—檢驗密碼和確認密碼的輸入內容是否一致?--?> ??
- ???????????????????<field-validator?type= "fieldexpression" > ??
- ????????????????????????????<param?name= "expression" >password==repassword</param> ??
- ????????????????????????????<message>確認密碼和密碼輸入不一致</message> ??
- ???????????????????</field-validator> ??
- ?????????</field> ??
- ?????????<field?name= "birthday" > ??
- ?????????<!—檢驗生日是否已輸入?--?> ??
- ???????????????????<field-validator?type= "required" > ??
- ????????????????????????????<message>請輸入生日日期</message> ??
- ???????????????????</field-validator> ??
- <!—檢驗輸入日期是否在一個有效日期范圍內?--?> ??
- ???????????????????<field-validator?type= "date" > ??
- ????????????????????????????<param?name= "min" > 1928 - 01 - 01 </param> ??
- ????????????????????????????<param?name= "max" > 2004 - 01 - 01 </param> ??
- ????????????????????????????<message>輸入生日日期無效</message> ??
- ???????????????????</field-validator> ??
- ?????????</field> ??
- ?????????<field?name= "mobile" > ??
- ???????????????????<!—檢驗手機號碼是否已輸入?--?> ??
- <field-validator?type= "requiredstring" > ??
- ????????????????????????????<message>請輸入手機號碼</message> ??
- ???????????????????</field-validator> ??
- ?????????<!—檢驗輸入手機號碼長度是否是 11 位有效手機號碼--?> ??
- ???????????????????<field-validator?type= "stringlength" > ??
- ????????????????????????????<param?name= "minLength" > 11 </param> ??
- ????????????????????????????<message>請輸入正確的手機號碼,號碼位數必須為 11 位</message> ??
- ???????????????????</field-validator> ??
- ?????????</field> ??
- ?????????<field?name= "age" > ??
- ??????????????<!—檢驗年齡是否已輸入?--?> ??
- ??????????????????<field-validator?type= "required" > ??
- ????????????<message>請輸入年齡</message> ??
- ???????????</field-validator> ??
- <!—檢驗輸入年齡是否符合特定年齡范圍?--?> ??
- ??????????????????<field-validator?type= "int" > ??
- ????????????????????????????<param?name= "min" > 1 </param> ??
- ????????????????????????????<param?name= "max" > 80 </param> ??
- ????????????????????????????<message>年齡必須在${min}-${max}歲之間</message> ??
- ???????????????????</field-validator> ??
- ?????????</field> ??
- </validators>??
<!---------文件名:RegisterAction-validation.xml----------> <?xml version="1.0" encoding="gb2312"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="username"> <!—檢驗用戶名的長度 -- > <field-validator type="stringlength"> <param name="minLength">6</param> <param name="maxLength">8</param> <message>用戶名長度必須在${minLength}-${maxLength}位之間</message> </field-validator> <!—檢驗用戶名是否已輸入 -- > <field-validator type="requiredstring"> <message>請輸入用戶名</message> </field-validator> </field> <field name="password"> <!—檢驗密碼的長度 -- > <field-validator type="stringlength"> <param name="minLength">6</param> <param name="maxLength">8</param> <message>密碼長度必須在${minLength}-${maxLength}位之間</message> </field-validator> <!—檢驗密碼是否已輸入 -- > <field-validator type="requiredstring"> <message>請輸入密碼</message> </field-validator> </field> <field name="repassword"> <!—檢驗確認密碼的長度 -- > <field-validator type="stringlength"> <param name="minLength">6</param> <param name="maxLength">8</param> <message>確認密碼長度必須在${minLength}-${maxLength}位之間</message> </field-validator> <!—檢驗確認密碼是否已輸入 -- > <field-validator type="requiredstring"> <message>請輸入確認密碼</message> </field-validator> <!—檢驗密碼和確認密碼的輸入內容是否一致 -- > <field-validator type="fieldexpression"> <param name="expression">password==repassword</param> <message>確認密碼和密碼輸入不一致</message> </field-validator> </field> <field name="birthday"> <!—檢驗生日是否已輸入 -- > <field-validator type="required"> <message>請輸入生日日期</message> </field-validator> <!—檢驗輸入日期是否在一個有效日期范圍內 -- > <field-validator type="date"> <param name="min">1928-01-01</param> <param name="max">2004-01-01</param> <message>輸入生日日期無效</message> </field-validator> </field> <field name="mobile"> <!—檢驗手機號碼是否已輸入 -- > <field-validator type="requiredstring"> <message>請輸入手機號碼</message> </field-validator> <!—檢驗輸入手機號碼長度是否是11位有效手機號碼-- > <field-validator type="stringlength"> <param name="minLength">11</param> <message>請輸入正確的手機號碼,號碼位數必須為11位</message> </field-validator> </field> <field name="age"> <!—檢驗年齡是否已輸入 -- > <field-validator type="required"> <message>請輸入年齡</message> </field-validator> <!—檢驗輸入年齡是否符合特定年齡范圍 -- > <field-validator type="int"> <param name="min">1</param> <param name="max">80</param> <message>年齡必須在${min}-${max}歲之間</message> </field-validator> </field> </validators>
?
代碼解釋
( 1 )使用配置文件來完成輸入校驗這種方式,首先在 Action 代碼中去除所有 validate 和 validateXXX 方法的代碼。然后在和 Action 類文件同一級目錄下增加 XXX-validation.xml 配置文件。這里“ XXX ”是 Action 類文件名字,表示該 XML 文件中所有輸入校驗的規則定義和錯誤信息顯示方式都只針對該 Action 有效。
( 2 )該輸入校驗的配置文件有 2 種書寫格式, 1 種是本節筆者要說的字段校驗格式。另 1 種是下 1 小節要介紹的非字段格式。首先來說明字段校驗格式。如代碼所示。在 <validators> 和 </validators> 之間使用 <field> 來對輸入界面表單中每 1 個字段進行輸入校驗規則定義和錯誤信息定義。
<field> 中的 name 屬性就是表單中字段名字。它里面包含 <field-validator> 標簽,它的 type 屬性表明是何種類型的輸入校驗。這些輸入校驗的 type 都是在 Struts2 中缺省定義的。被稱之為校驗器。具體這些校驗器是如何形成的以及如何生效,在之后章節還有有介紹。這里讀者只是知道一下就可以。
在 <field-validator> 標簽內可以有 2 種標簽。 1 種是 <param> 標簽,該標簽定義了一些輸入校驗規則需要用到的參數。這些參數更可以以“ ${ 參數名 } ”格式顯示在視圖頁面上。除此之外還有 <message> 標簽,該標簽定義的是輸入校驗出錯后的出錯信息。這些信息是可以顯示在試圖界面上的。
( 3 )值得說的是代碼中黑體表明的參數名字。因為 Struts2 中特定的校驗類型的參數名是已經在 Struts2 代碼中缺省定義過的。因此如果開發者定義的參數名字和它本身缺省定義的不符合。那么輸入校驗時候在配置文件中定義的該校驗規則是不會生效的。比如代碼中的“ stringlength ”類型校驗,如果定義的最大長度不是“ maxLength ”而是其他的。則在輸入數據界面,如果輸入的數據超過最大長度,視圖界面不會給出特定的出錯信息的。
( 4 )如果在輸入數據的視圖界面的表單中輸入上述 JSP 文件中的黑體“ validate="true" ”。則其實是另外 1 種輸入校驗的方式。這種方式稱之為“客戶端輸入校驗方式”。它會自動在試圖頁面中生成很多 JavaScript 代碼。但是它是有其局限性的,因此這些代碼的適合程度不是對 Struts2 中所有的主題都適合的(有關主題的基本概念翻閱“ Struts2 標簽”章節)。因此筆者本身不贊同這樣的輸入校驗方式。這里只是向讀者介紹希望讀者對 Struts2 的輸入校驗有個完整的印象。
8.2.2 ? Struts2 非字段校驗的配置文件形式
技術要點
Struts2 輸入校驗配置文件非字段校驗格式介紹。
非字段校驗格式和相關注意點。
演示代碼
于上一小節代碼相比,只是輸入校驗配置文件中內容有所不同。代碼如下:
- <!--------文件名:RegisterAction-validation.xml-----------> ??
- <validators> ??
- ?????????<!—檢驗輸入用戶名長度是否在一個有效范圍內?--?> ??
- ?????????<validator?type= "stringlength" > ??
- ???????????????????<param?name= "fieldName" >username</param> ??
- ???????????????????<param?name= "minLength" > 6 </param> ??
- ???????????????????<param?name= "maxLength" > 8 </param> ??
- ???????????????????<message>用戶名長度必須在${minLength}-${maxLength}位之間</message> ??
- ?????????</validator> ??
- ?????????<!—檢驗用戶名是否已輸入?--?> ??
- ?????????<validator?type= "requiredstring" > ??
- ???????????????????<param?name= "fieldName" >username</param> ??
- ???????????????????<message>請輸入用戶名</message> ??
- ?????????</validator> ??
- ?????????<!—檢驗密碼的長度?--?> ??
- ?????????<validator?type= "stringlength" > ??
- ???????????????????<param?name= "fieldName" >password</param> ??
- ???????????????????<param?name= "minLength" > 6 </param> ??
- ???????????????????<param?name= "maxLength" > 8 </param> ??
- ???????????????????<message>密碼長度必須在${minLength}-${maxLength}位之間</message> ??
- ?????????</validator> ??
- ?????????<!—檢驗密碼是否已輸入?--?> ??
- ?????????<validator?type= "requiredstring" > ??
- ???????????????????<param?name= "fieldName" >password</param> ??
- ???????????????????<message>請輸入密碼</message> ??
- ?????????</validator> ??
- ?????????<!—檢驗確認密碼的長度?--?> ??
- <validator?type= "stringlength" > ??
- ???????????????????<param?name= "fieldName" >repassword</param> ??
- ???????????????????<param?name= "minLength" > 6 </param> ??
- ???????????????????<param?name= "maxLength" > 8 </param> ??
- ???????????????????<message>確認密碼長度必須在${minLength}-${maxLength}位之間</message> ??
- ?????????</validator> ??
- ?????????<!—檢驗確認密碼是否已輸入?--?> ??
- ?????????<validator?type= "requiredstring" > ??
- ???????????????????<param?name= "fieldName" >repassword</param> ??
- ???????????????????<message>請輸入確認密碼</message> ??
- ?????????</validator> ??
- ?????????<!—檢驗密碼和確認密碼的輸入內容是否一致?--?> ??
- ?????????<validator?type= "fieldexpression" > ??
- ???????????????????<param?name= "fieldName" >password</param> ??
- ???????????????????<param?name= "fieldName" >repassword</param> ??
- ???????????????????<param?name= "expression" >password==repassword</param> ??
- ???????????????????<message>確認密碼和密碼輸入不一致</message> ??
- ?????????</validator> ??
- ?????????<!—檢驗生日是否已輸入?--?> ??
- ?????????<validator?type= "required" > ??
- ???????????????????<param?name= "fieldName" >birthday</param> ??
- ???????????????????<message>請輸入生日日期</message> ??
- ?????????</validator> ??
- ?????????<!—檢驗輸入日期是否在一個有效日期范圍內?--?> ??
- ?????????<validator?type= "date" > ??
- ???????????????????<param?name= "fieldName" >birthday</param> ??
- ???????????????????<param?name= "min" > 1928 - 01 - 01 </param> ??
- ???????????????????<param?name= "max" > 2004 - 01 - 01 </param> ??
- ???????????????????<message>輸入生日日期無效</message> ??
- ?????????</validator> ??
- ?????????<!—檢驗手機號碼是否已輸入?--?> ??
- ?????????<validator?type= "requiredstring" > ??
- ???????????????????<param?name= "fieldName" >mobile</param> ??
- ???????????????????<message>請輸入手機號碼</message> ??
- ?????????</validator> ??
- ?????????<!—檢驗輸入手機號碼長度是否是 11 位有效手機號碼--?> ??
- ?????????<validator?type= "stringlength" > ??
- ???????????????????<param?name= "fieldName" >mobile</param> ??
- ???????????????????<message>請輸入正確的手機號碼,號碼位數必須為 11 位</message> ??
- ?????????</validator> ??
- ?????????<!—檢驗年齡是否已輸入?--?> ??
- ?????????<validator?type= "required" > ??
- ???????????????????<param?name= "fieldName" >age</param> ??
- ???????????????????<message>請輸入年齡</message> ??
- ?????????</validator> ??
- ?????????<!—檢驗輸入年齡是否符合特定年齡范圍?--?> ??
- ?????????<validator?type= "int" > ??
- ???????????????????<param?name= "fieldName" >age</param> ??
- ???????????????????<param?name= "min" > 1 </param> ??
- ???????????????????<param?name= "max" > 80 </param> ??
- ???????????????????<message>年齡必須在${min}-${max}歲之間</message> ??
- ?????????</validator> ??
- </validators>??
<!--------文件名:RegisterAction-validation.xml-----------> <validators> <!—檢驗輸入用戶名長度是否在一個有效范圍內 -- > <validator type="stringlength"> <param name="fieldName">username</param> <param name="minLength">6</param> <param name="maxLength">8</param> <message>用戶名長度必須在${minLength}-${maxLength}位之間</message> </validator> <!—檢驗用戶名是否已輸入 -- > <validator type="requiredstring"> <param name="fieldName">username</param> <message>請輸入用戶名</message> </validator> <!—檢驗密碼的長度 -- > <validator type="stringlength"> <param name="fieldName">password</param> <param name="minLength">6</param> <param name="maxLength">8</param> <message>密碼長度必須在${minLength}-${maxLength}位之間</message> </validator> <!—檢驗密碼是否已輸入 -- > <validator type="requiredstring"> <param name="fieldName">password</param> <message>請輸入密碼</message> </validator> <!—檢驗確認密碼的長度 -- > <validator type="stringlength"> <param name="fieldName">repassword</param> <param name="minLength">6</param> <param name="maxLength">8</param> <message>確認密碼長度必須在${minLength}-${maxLength}位之間</message> </validator> <!—檢驗確認密碼是否已輸入 -- > <validator type="requiredstring"> <param name="fieldName">repassword</param> <message>請輸入確認密碼</message> </validator> <!—檢驗密碼和確認密碼的輸入內容是否一致 -- > <validator type="fieldexpression"> <param name="fieldName">password</param> <param name="fieldName">repassword</param> <param name="expression">password==repassword</param> <message>確認密碼和密碼輸入不一致</message> </validator> <!—檢驗生日是否已輸入 -- > <validator type="required"> <param name="fieldName">birthday</param> <message>請輸入生日日期</message> </validator> <!—檢驗輸入日期是否在一個有效日期范圍內 -- > <validator type="date"> <param name="fieldName">birthday</param> <param name="min">1928-01-01</param> <param name="max">2004-01-01</param> <message>輸入生日日期無效</message> </validator> <!—檢驗手機號碼是否已輸入 -- > <validator type="requiredstring"> <param name="fieldName">mobile</param> <message>請輸入手機號碼</message> </validator> <!—檢驗輸入手機號碼長度是否是11位有效手機號碼-- > <validator type="stringlength"> <param name="fieldName">mobile</param> <message>請輸入正確的手機號碼,號碼位數必須為11位</message> </validator> <!—檢驗年齡是否已輸入 -- > <validator type="required"> <param name="fieldName">age</param> <message>請輸入年齡</message> </validator> <!—檢驗輸入年齡是否符合特定年齡范圍 -- > <validator type="int"> <param name="fieldName">age</param> <param name="min">1</param> <param name="max">80</param> <message>年齡必須在${min}-${max}歲之間</message> </validator> </validators>
?
代碼解釋
( 1 ) 非字段格式的輸入校驗方式與上 1 小節相比主要是它的書寫格式不是像之前在 <validators> 和 </validators> 之間包含 <field> 標簽,而是 <validator> 標簽。每個 <validator> 標簽定義的 type 屬性還是 Struts2 自帶的輸入校驗器的類型格式。
( 2 )在 <validator> 標簽之內包含的還是 <param> 和 <message> 兩種標簽。但是在 <param> 中多定義了一個 fieldName 屬性。這個屬性定義的就是輸入校驗的表單字段名字。其他和之前字段格式都類似。
( 3 )由于所有數據輸入的校驗出錯的錯誤信息和 8.1 節相同,因此所有的校驗出錯的信息顯示讀者可以參看圖 8.1 到圖 8.4 這幾張圖示。
8.2.3 ? Struts2 輸入校驗出錯信息的國際化配置形式
技術要點
Struts2 輸入校驗配置文件中定義了 <message> 標簽。該標簽定義了很多輸入校驗出錯信息。之前還是使用硬編碼寫死在配置文件中。其實可以使用 Struts2 的國際化配置將這些錯誤信息寫在屬性文件中。本小節就介紹一下如何將錯誤信息定義在屬性文件中也為之后 Struts2 國際化章節做個基礎介紹。
配置文件中修改代碼介紹,介紹出錯信息的 key 屬性定義。
使用中文的屬性文件出錯信息定義代碼
演示代碼
配置文件代碼如下:
- <!------------文件名:RegisterAction-validation.xml-------------> ??
- <validators> ??
- ?????????<validator?type= "stringlength" > ??
- ???????????????????<param?name= "fieldName" >username</param> ??
- ???????????????????<param?name= "minLength" > 6 </param> ??
- ???????????????????<param?name= "maxLength" > 8 </param> ??
- ???????????????????<message?key= "userNameLengthRange" ></message> ??
- ?????????</validator> ??
- ?????????<validator?type= "requiredstring" > ??
- ???????????????????<param?name= "fieldName" >username</param> ??
- ???????????????????<message?key= "userNameRequired" ></message> ??
- ?????????</validator> ??
- ?????????<validator?type= "stringlength" > ??
- ???????????????????<param?name= "fieldName" >password</param> ??
- ???????????????????<param?name= "minLength" > 6 </param> ??
- ???????????????????<param?name= "maxLength" > 8 </param> ??
- ???????????????????<message?key= "passwordLength" ></message> ??
- ?????????</validator> ??
- ?????????<validator?type= "requiredstring" > ??
- ???????????????????<param?name= "fieldName" >password</param> ??
- ???????????????????<message?key= "passwordRequired" ></message> ??
- ?????????</validator> ??
- ?????????<validator?type= "stringlength" > ??
- ???????????????????<param?name= "fieldName" >repassword</param> ??
- ???????????????????<param?name= "minLength" > 6 </param> ??
- ???????????????????<param?name= "maxLength" > 8 </param> ??
- ???????????????????<message?key= "repasswordLength" ></message> ??
- ?????????</validator> ??
- ?????????<validator?type= "requiredstring" > ??
- ???????????????????<param?name= "fieldName" >repassword</param> ??
- ???????????????????<message?key= "repasswordRequired" ></message> ??
- ?????????</validator> ??
- ?????????<validator?type= "fieldexpression" > ??
- ???????????????????<param?name= "fieldName" >password</param> ??
- ???????????????????<param?name= "fieldName" >repassword</param> ??
- ???????????????????<param?name= "expression" >password==repassword</param> ??
- ???????????????????<message?key= "repasswordEquals" ></message> ??
- ?????????</validator> ??
- ?????????<validator?type= "required" > ??
- ???????????????????<param?name= "fieldName" >birthday</param> ??
- ???????????????????<message?key= "birthdayRequired" ></message> ??
- ?????????</validator> ??
- ?????????<validator?type= "date" > ??
- ???????????????????<param?name= "fieldName" >birthday</param> ??
- ???????????????????<param?name= "min" > 1928 - 01 - 01 </param> ??
- ???????????????????<param?name= "max" > 2004 - 01 - 01 </param> ??
- ???????????????????<message?key= "birthdayRange" ></message> ??
- ?????????</validator> ??
- ?????????<validator?type= "requiredstring" > ??
- ???????????????????<param?name= "fieldName" >mobile</param> ??
- ???????????????????<message?key= "mobileRequired" ></message> ??
- ?????????</validator> ??
- ?????????<validator?type= "stringlength" > ??
- ???????????????????<param?name= "fieldName" >mobile</param> ??
- ???????????????????<message?key= "mobileLength" ></message> ??
- ?????????</validator> ??
- ?????????<validator?type= "required" > ??
- ???????????????????<param?name= "fieldName" >age</param> ??
- ???????????????????<message?key= "ageRequired" ></message> ??
- ?????????</validator> ??
- ?????????<validator?type= "int" > ??
- ???????????????????<param?name= "fieldName" >age</param> ??
- ???????????????????<param?name= "min" > 1 </param> ??
- ???????????????????<param?name= "max" > 80 </param> ??
- ???????????????????<message?key= "ageRange" ></message> ??
- ?????????</validator> ??
- </validators>??
<!------------文件名:RegisterAction-validation.xml-------------> <validators> <validator type="stringlength"> <param name="fieldName">username</param> <param name="minLength">6</param> <param name="maxLength">8</param> <message key="userNameLengthRange"></message> </validator> <validator type="requiredstring"> <param name="fieldName">username</param> <message key="userNameRequired"></message> </validator> <validator type="stringlength"> <param name="fieldName">password</param> <param name="minLength">6</param> <param name="maxLength">8</param> <message key="passwordLength"></message> </validator> <validator type="requiredstring"> <param name="fieldName">password</param> <message key="passwordRequired"></message> </validator> <validator type="stringlength"> <param name="fieldName">repassword</param> <param name="minLength">6</param> <param name="maxLength">8</param> <message key="repasswordLength"></message> </validator> <validator type="requiredstring"> <param name="fieldName">repassword</param> <message key="repasswordRequired"></message> </validator> <validator type="fieldexpression"> <param name="fieldName">password</param> <param name="fieldName">repassword</param> <param name="expression">password==repassword</param> <message key="repasswordEquals"></message> </validator> <validator type="required"> <param name="fieldName">birthday</param> <message key="birthdayRequired"></message> </validator> <validator type="date"> <param name="fieldName">birthday</param> <param name="min">1928-01-01</param> <param name="max">2004-01-01</param> <message key="birthdayRange"></message> </validator> <validator type="requiredstring"> <param name="fieldName">mobile</param> <message key="mobileRequired"></message> </validator> <validator type="stringlength"> <param name="fieldName">mobile</param> <message key="mobileLength"></message> </validator> <validator type="required"> <param name="fieldName">age</param> <message key="ageRequired"></message> </validator> <validator type="int"> <param name="fieldName">age</param> <param name="min">1</param> <param name="max">80</param> <message key="ageRange"></message> </validator> </validators>
?
支持中文的國際化配置屬性文件代碼如下:
- <!---------------文件名:messageResource.properties--------------> ??
- #配置文件中<message>的key屬性定義 ??
- userNameLengthRange=用戶名長度必須在${minLength}-${maxLength}位之間 ??
- userNameRequired=請輸入用戶名 ??
- passwordLength=密碼長度必須在${minLength}-${maxLength}位之間 ??
- passwordRequired=請輸入密碼 ??
- repasswordLength=確認密碼長度必須在${minLength}-${maxLength}位之間 ??
- repasswordRequired=請輸入確認密碼 ??
- repasswordEquals=確認密碼和密碼輸入不一致 ??
- birthdayRequired=請輸入生日日期 ??
- birthdayRange=輸入生日日期無效 ??
- mobileRequired=請輸入手機號碼 ??
- mobileLength=請輸入正確的手機號碼,號碼位數必須為 11 位 ??
- ageRequired=請輸入年齡 ??
- ageRange=年齡必須在${min}-${max}歲之間??
<!---------------文件名:messageResource.properties--------------> #配置文件中<message>的key屬性定義 userNameLengthRange=用戶名長度必須在${minLength}-${maxLength}位之間 userNameRequired=請輸入用戶名 passwordLength=密碼長度必須在${minLength}-${maxLength}位之間 passwordRequired=請輸入密碼 repasswordLength=確認密碼長度必須在${minLength}-${maxLength}位之間 repasswordRequired=請輸入確認密碼 repasswordEquals=確認密碼和密碼輸入不一致 birthdayRequired=請輸入生日日期 birthdayRange=輸入生日日期無效 mobileRequired=請輸入手機號碼 mobileLength=請輸入正確的手機號碼,號碼位數必須為11位 ageRequired=請輸入年齡 ageRange=年齡必須在${min}-${max}歲之間
?
代碼解釋
( 1 ) 在配置文件中筆者對 <message> 標簽做了修改。使用了 key 屬性,這些 key <
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
