欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Struts2講義36

系統(tǒng) 1991 0

8.3 ? 集合類型輸入校驗(yàn)介紹

于之前類型轉(zhuǎn)化章節(jié)中記述的集合類型的對(duì)象類型轉(zhuǎn)化相同。 Struts2 也支持集合類型的對(duì)象的輸入校驗(yàn)。因此批量的對(duì)同一對(duì)象包含的屬性數(shù)據(jù)的輸入校驗(yàn)也是筆者需要向讀者說(shuō)明的,讀者可以于類型轉(zhuǎn)化中相關(guān)章節(jié)一起對(duì)照來(lái)學(xué)習(xí)。

8.3.1 ? Struts2 中單個(gè) Java 對(duì)象的輸入校驗(yàn)形式

技術(shù)要點(diǎn) 在介紹集合類型的輸入校驗(yàn)之前,必須向讀者介紹單個(gè) Java 對(duì)象輸入校驗(yàn)的形式。因?yàn)槊總€(gè)集合類型中包含的元素都是一個(gè)個(gè)單獨(dú)的 java 對(duì)象,因此 Java 對(duì)象的輸入校驗(yàn)是集合類型對(duì)象數(shù)據(jù)輸入校驗(yàn)的基礎(chǔ)。請(qǐng)讀者必須要掌握。

?

Visitor 校驗(yàn)器的介紹和使用方式。

Action Java 對(duì)象的輸入校驗(yàn)配置文件介紹。

演示代碼

還是使用第七章的添加材料那個(gè)示例。具體的 Material 對(duì)象代碼和第七章相同。 Action 代碼如下:

Java代碼 復(fù)制代碼
  1. <!---------------文件名:AddMaterialAction.java---------------> ??
  2. ………… ??
  3. public ? class ?AddMaterialAction? extends ?ActionSupport?{ ??
  4. ????????? //屬性類型需要輸入校驗(yàn)的材料對(duì)象 ??
  5. ????????? private ?Material?material; ??
  6. ??
  7. ????????? public ?Material?getMaterial()?{ ??
  8. ??????????????????? return ?material; ??
  9. ?????????} ??
  10. ? ??
  11. ????????? public ? void ?setMaterial(Material?material)?{ ??
  12. ??????????????????? this .material?=?material; ??
  13. ?????????} ??
  14. ? ??
  15. ????????? public ?String?execute()? throws ?Exception?{ ??
  16. ??????????????????? return ?SUCCESS; ??
  17. ?????????} ??
  18. }??
    <!---------------文件名:AddMaterialAction.java--------------->
…………
public class AddMaterialAction extends ActionSupport {
         //屬性類型需要輸入校驗(yàn)的材料對(duì)象
         private Material material;

         public Material getMaterial() {
                   return material;
         }
 
         public void setMaterial(Material material) {
                   this.material = material;
         }
 
         public String execute() throws Exception {
                   return SUCCESS;
         }
}
  

?

添加材料和顯示添加材料成功的 JSP 視圖界面代碼也和第七章相同。修改 Action 的輸入校驗(yàn)配置文件 AddMaterialAction-validation.xml 文件,代碼如下:

Java代碼 復(fù)制代碼
  1. <!-------------文件名:AddMaterialAction-validation.xml-------------> ??
  2. <validators> ??
  3. ?????????<field?name= "material" > ??
  4. ???????????????????<!-?-單個(gè)JAVA對(duì)象校驗(yàn)??--> ??
  5. ???????????????????<field-validator?type= "visitor" > ??
  6. ????????????????????????????<param?name= "context" >materialContext</param> ??
  7. ????????????????????????????<param?name= "appendPrefix" > true </param> ??
  8. ????????????????????????????<message>添加材料輸入校驗(yàn):</message> ??
  9. ???????????????????</field-validator> ??
  10. ?????????</field> ??
  11. </validators>??
    <!-------------文件名:AddMaterialAction-validation.xml------------->
<validators>
         <field name="material">
                   <!- -單個(gè)JAVA對(duì)象校驗(yàn)  -->
                   <field-validator type="visitor">
                            <param name="context">materialContext</param>
                            <param name="appendPrefix">true</param>
                            <message>添加材料輸入校驗(yàn):</message>
                   </field-validator>
         </field>
</validators>
  

?

除了 Action 校驗(yàn)配置文件之外,本示例中還要增加 1 個(gè)對(duì)于 Material 這個(gè) Java 對(duì)象的輸入校驗(yàn)配置文件,名字叫 Material-materialContext-validation.xml 。至于為什么取這個(gè)名字稍后在代碼解釋中將說(shuō)明。代碼如下:

Java代碼 復(fù)制代碼
  1. <!-------文件名:Material-materialContext-validation.xml----------> ??
  2. <validators>????? ??
  3. ?????????<field?name= "material" > ??
  4. ???????????????????<!?-?-?校驗(yàn)材料是否輸入-?-> ??
  5. ???????????????????<field-validator?type= "requiredstring" > ??
  6. ????????????????????????????<message>請(qǐng)輸入材料名</message> ??
  7. ???????????????????</field-validator> ??
  8. ?????????</field> ??
  9. ??????? ??
  10. ?????????<field?name= "bid" > ??
  11. ???????????????????<!?-?-?校驗(yàn)價(jià)格是否輸入-?-> ??
  12. ???????????????????<field-validator?type= "double" > ??
  13. ????????????????????????????<param?name= "minExclusive" > 0.1 </param> ??
  14. ????????????????????????????<message>請(qǐng)輸入價(jià)格</message> ??
  15. ???????????????????</field-validator> ??
  16. ?????????</field> ??
  17. ???????? ??
  18. ?????????<field?name= "mount" > ??
  19. ???????????????????<!?-?-?校驗(yàn)庫(kù)存量是否輸入-?-> ??
  20. ???????????????????<field-validator?type= "int" > ??
  21. ????????????????????????????<param?name= "min" > 1 </param> ??
  22. ????????????????????????????<message>請(qǐng)輸入庫(kù)存量</message> ??
  23. ???????????????????</field-validator> ??
  24. ?????????</field> ??
  25. ???????? ??
  26. ?????????<field?name= "expireDate" > ??
  27. ???????????????????<!?-?-?校驗(yàn)過(guò)期日期是否輸入-?-> ??
  28. ???????????????????<field-validator?type= "required" > ??
  29. ????????????????????????????<message>請(qǐng)輸入過(guò)期日期</message> ??
  30. ???????????????????</field-validator> ??
  31. ???????????????????<!?-?-?校驗(yàn)過(guò)期日期是否在指定日期范圍內(nèi)-?-> ??
  32. ???????????????????<field-validator?type= "date" > ??
  33. ????????????????????????????<param?name= "min" > 2009 - 01 - 01 </param> ??
  34. ????????????????????????????<param?name= "max" > 2019 - 01 - 01 </param> ??
  35. ????????????????????????????<message>輸入過(guò)期日期無(wú)效</message> ??
  36. ???????????????????</field-validator> ??
  37. ?????????</field> ??
  38. </validators>??
    <!-------文件名:Material-materialContext-validation.xml---------->
<validators>     
         <field name="material">
                   <! - - 校驗(yàn)材料是否輸入- ->
                   <field-validator type="requiredstring">
                            <message>請(qǐng)輸入材料名</message>
                   </field-validator>
         </field>
       
         <field name="bid">
                   <! - - 校驗(yàn)價(jià)格是否輸入- ->
                   <field-validator type="double">
                            <param name="minExclusive">0.1</param>
                            <message>請(qǐng)輸入價(jià)格</message>
                   </field-validator>
         </field>
        
         <field name="mount">
                   <! - - 校驗(yàn)庫(kù)存量是否輸入- ->
                   <field-validator type="int">
                            <param name="min">1</param>
                            <message>請(qǐng)輸入庫(kù)存量</message>
                   </field-validator>
         </field>
        
         <field name="expireDate">
                   <! - - 校驗(yàn)過(guò)期日期是否輸入- ->
                   <field-validator type="required">
                            <message>請(qǐng)輸入過(guò)期日期</message>
                   </field-validator>
                   <! - - 校驗(yàn)過(guò)期日期是否在指定日期范圍內(nèi)- ->
                   <field-validator type="date">
                            <param name="min">2009-01-01</param>
                            <param name="max">2019-01-01</param>
                            <message>輸入過(guò)期日期無(wú)效</message>
                   </field-validator>
         </field>
</validators>
  

?

注意:該輸入校驗(yàn)配置文件要和 Material 這個(gè) Java 對(duì)象的代碼文件放在同一目錄下。

筆者還增加了一個(gè) struts.properties 文件,方便輸入支持本示例的字符編碼集 GB2312

代碼如下:

Java代碼 復(fù)制代碼
  1. <!-------------文件名:struts.properties----------------------> ??
  2. #支持本地化的資源文件名定義 ??
  3. struts.i18n.encoding=gb2312??
    <!-------------文件名:struts.properties---------------------->
#支持本地化的資源文件名定義
struts.i18n.encoding=gb2312
  

?

如圖 8.5 ,如果沒(méi)有輸入任何信息時(shí)候的輸入校驗(yàn)錯(cuò)誤信息提示。

Struts2講義36

8.5 ? 輸入校驗(yàn)發(fā)現(xiàn)數(shù)據(jù)沒(méi)有進(jìn)行任何輸入

如果輸入的過(guò)期日期不是 Material-materialContext-validation.xml 文件中定義的日期范圍時(shí)候出錯(cuò)信息如圖 8.6

Struts2講義36

?

8.6 ? 輸入校驗(yàn)發(fā)現(xiàn)日期不符合所定義的日期范圍

代碼解釋

1 )其實(shí)本示例代碼很多都和類型轉(zhuǎn)換中復(fù)合類型對(duì)象的類型轉(zhuǎn)換示例很相似。所不同的就是兩個(gè)輸入校驗(yàn)時(shí)候使用的 xml 文件。

2 )第 1 個(gè)文件是 Action 的校驗(yàn)文件。該文件里由于 Action 的私有變量是一個(gè) Material 對(duì)象。因此代碼中 fieldname 是該變量名字,定義了 2 個(gè)參數(shù)。 1 個(gè)是 context 參數(shù),所定義的名字是有開(kāi)發(fā)者自己自由定義。但是之后 Material 對(duì)象的輸入校驗(yàn)配置文件名字中必須有這個(gè)名字。而 appendPrefix 參數(shù)缺省是 false, 定義為 true 時(shí)候則表明在輸入校驗(yàn)出錯(cuò)信息之前可以加上 message 所定義內(nèi)容。圖 8.5 和圖 8.6 也顯示了每個(gè)出錯(cuò)信息前都有 message 中定義的“添加材料輸入校驗(yàn):”這幾個(gè)字,其原因就是筆者把 appendPrefix 參數(shù)設(shè)置了 true 才會(huì)有這樣的效果。

3 )第 2 個(gè)文件是本示例重點(diǎn),這個(gè)輸入校驗(yàn)配置文件名字命名格式是“ Java 對(duì)象名 -context 參數(shù) -validation.xml ”。在本示例中就是“ Material-materialContext-validation.xml ”。而且之前也已經(jīng)說(shuō)了該文件一定要和 Java 對(duì)象的類代碼文件放在同一目錄下。其中對(duì)輸入校驗(yàn)規(guī)則的定義和前幾節(jié)類似。都是使用了 Struts2 內(nèi)置的輸入校驗(yàn)器。其中用到了 1 個(gè)前幾節(jié)沒(méi)有用到的 double 類型,在之后小節(jié)會(huì)綜合 Struts2 內(nèi)置的輸入校驗(yàn)器一起說(shuō)明。

8.3.2 ? Struts2 對(duì)象集合即批量輸入的校驗(yàn)形式

技術(shù)要點(diǎn)

Struts2 中也支持對(duì) List Set 等數(shù)據(jù)集合的輸入校驗(yàn)。在視圖頁(yè)面上即是對(duì)同一 Java 對(duì)象進(jìn)行批量的輸入。這里筆者值介紹 List 數(shù)據(jù)集合類型的校驗(yàn)。其他數(shù)據(jù)集合類型校驗(yàn)依此類推。

批量輸入校驗(yàn)格式和相關(guān)注意點(diǎn)。

演示代碼

其實(shí)和上一小節(jié)代碼是相同的。這里只將不同的代碼羅列出來(lái)。支持 List 類型轉(zhuǎn)換的屬性文件如下:

Java代碼 復(fù)制代碼
  1. <!-----------文件名:AddMaterialAction-conversion.properties-----------> ??
  2. #集合屬性-List類型 ??
  3. Element_materialList=com.model.Material??
    <!-----------文件名:AddMaterialAction-conversion.properties----------->
#集合屬性-List類型
Element_materialList=com.model.Material
  

?

Action 代碼如下:

Java代碼 復(fù)制代碼
  1. <!-------------文件名:AddMaterialAction.java---------------> ??
  2. public ? class ?AddMaterialAction? extends ?ActionSupport?{ ??
  3. ????????? private ?List<Material>?materialList;?? ??
  4. ??
  5. ????????? public ?String?execute()? throws ?Exception?{ ??
  6. ??????????????????? return ?SUCCESS; ??
  7. ?????????} ??
  8. ??
  9. ????????? public ?List<Material>?getMaterialList()?{ ??
  10. ??????????????????? return ?materialList; ??
  11. ?????????} ??
  12. ??
  13. ????????? public ? void ?setMaterialList(List<Material>?materialList)?{ ??
  14. ??????????????????? this .materialList?=?materialList; ??
  15. ?????????} ??
  16. }??
    <!-------------文件名:AddMaterialAction.java--------------->
public class AddMaterialAction extends ActionSupport {
         private List<Material> materialList;  

         public String execute() throws Exception {
                   return SUCCESS;
         }

         public List<Material> getMaterialList() {
                   return materialList;
         }

         public void setMaterialList(List<Material> materialList) {
                   this.materialList = materialList;
         }
}
  

?

輸入的 JSP 視圖界面代碼如下:

Java代碼 復(fù)制代碼
  1. <!------------文件名:addMaterial.jsp------------------> ??
  2. ????????????????????????????<s:form?id= "materialForm" ?action= "addMaterial" ?theme= "simple" > ??
  3. ????????????????????????????<table> ??
  4. ????????????????????????????<tr> ??
  5. ????????????????????????????<td>材料名</td> ??
  6. ????????????????????????????<td>價(jià)格</td> ??
  7. ????????????????????????????<td>庫(kù)存量</td> ??
  8. ????????????????????????????<td>過(guò)期日期</td> ??
  9. ????????????????????????????</tr> ??
  10. ????????????????????????????<s:iterator?value= "new?int[4]" ?status= "m" > ??
  11. ????????????????????????????<tr> ??
  12. ????????????????????????????<td><s:textfield?name= "%{'materialList['+#m.index+'].material'}" ?/></td> ??
  13. ????????????<td><s:textfield?name= "%{'materialList['+#m.index+'].bid'}" ?/></td> ??
  14. ????????????<td><s:textfield?name= "%{'materialList['+#m.index+'].mount'}" ?/></td> ??
  15. ????????????<td><s:datetimepicker?name= "%{'materialList['+#m.index+'].expireDate'}" ?/></td> ??
  16. ????????????????????????????</tr> ??
  17. ????????????????????????????</s:iterator> ??
  18. ????????????????????????????<tr> ??
  19. ????????????????????????????<td?colspan= "4" ><s:submit?value= "提交" ></s:submit> ??
  20. ????????????????????????????</tr> ??
  21. ????????????????????????????</table> ??
  22. ????????????????????????????</s:form>??
    <!------------文件名:addMaterial.jsp------------------>
                            <s:form id="materialForm" action="addMaterial" theme="simple">
                            <table>
                            <tr>
                            <td>材料名</td>
                            <td>價(jià)格</td>
                            <td>庫(kù)存量</td>
                            <td>過(guò)期日期</td>
                            </tr>
                            <s:iterator value="new int[4]" status="m">
                            <tr>
                            <td><s:textfield name="%{'materialList['+#m.index+'].material'}" /></td>
            <td><s:textfield name="%{'materialList['+#m.index+'].bid'}" /></td>
            <td><s:textfield name="%{'materialList['+#m.index+'].mount'}" /></td>
            <td><s:datetimepicker name="%{'materialList['+#m.index+'].expireDate'}" /></td>
                            </tr>
                            </s:iterator>
                            <tr>
                            <td colspan="4"><s:submit value="提交"></s:submit>
                            </tr>
                            </table>
                            </s:form>
  

?

輸入校驗(yàn)顯示出錯(cuò)信息如圖 8.7

Struts2講義36

?

8.7 ? 輸入校驗(yàn)所有數(shù)據(jù)為輸入時(shí)候的出錯(cuò)信息

代碼解釋

1 Action 中私有變量是個(gè) List 類型的 Material 對(duì)象的集合。但是 Action Material 對(duì)象的輸入校驗(yàn)配置文件內(nèi)容和前 1 小節(jié)相同。

2 AddMaterialAction-conversion.properties 文件定義了 List 的元素都是 Material 對(duì)象 ( 請(qǐng)讀者翻閱 List 集合類型轉(zhuǎn)換章節(jié),回憶一下這么做的原因 )

3 )批量輸入材料的 JSP 視圖界面由代碼可知和前一章類型轉(zhuǎn)換中界面相同。筆者在本章一開(kāi)始就說(shuō)明了類型轉(zhuǎn)換其實(shí)也是輸入校驗(yàn)的 1 種。從這里也可以佐證這 1 論點(diǎn)。在下 1 小節(jié)也有說(shuō)明。

4 )圖 8.7 顯示了所有信息未輸入時(shí)候的出錯(cuò)信息。表明批量輸入校驗(yàn)的確是在起作用。

Struts2講義36


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 爱人同志国语免费观看全集 | 国产欧美精品在线 | 久久精品免费视频观看 | 国产精品中文 | 国产精品揄拍100视频最近 | 99精品国产高清在线观看 | 欧美日韩精品综合 | 国产午夜精品一区二区三区 | 青青久热| 影音av| 国产精品成人国产乱一区 | 亚洲欧美一区二区三区在线 | 日韩中文字幕在线播放 | 天天色官网 | 国产欧美日韩亚洲精品区2345 | 亚洲精品手机在线 | 久草在线草a免费线看 | 亲爱的热爱的电视剧免费观看 | www.精品| 丝袜 亚洲 另类 欧美 综合 | 成人 日韩 在线 | 久久人人爽人人爽 | 久草视频在线免费播放 | 免费的av| 亚洲产国偷V产偷V自拍A片 | 色色噜一噜 | 在线中文字幕视频 | 奇米777me| 九色成人蝌蚪国产精品电影在线 | 波多野结衣a∨免费观看 | 欧美一做特黄毛片 | 无遮挡很爽很污很黄的网站w | 91成人影院未满十八勿入 | 69午夜| 国产大片在线观看 | 久久一区二区三区四区 | 亚洲狠狠丁香婷婷综合久久久 | 噜噜噜噜狠狠狠7777视频 | 精品一区二区三区在线视频 | 豆国产97在线 | 亚洲 | 日本v在线 |