Java學(xué)習(xí)

          java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經(jīng)搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會(huì)盡力幫助解決。一起進(jìn)步

           

          表單驗(yàn)證:使用struts中的validator框架

          第一步:

          我們在struts-config.xml里:
          Java代碼
          1. <action-mappings >   
          2. <action   
          3. attribute="logForm"   
          4. input="/form/log.jsp"   
          5. name="logForm"   
          6. path="/log"   
          7. scope="request"   
          8. type="com.yourcompany.struts.action.LogAction"   
          9. validate="true"   
          10. <forward name="s" path="/form/MyJsp.jsp" />   
          11. </action>   
          里面必須加上validate="true"這么句代碼,否則,驗(yàn)證機(jī)制將可能不會(huì)運(yùn)行。
          另外,配置文件中還須加入以下代碼,表示使用插件:
          Java代碼
          1. <plug-in className="org.apache.struts.validator.ValidatorPlugIn">  
          2.         <set-property property="pathnames"  
          3.             value="/WEB-INF/validator-rules.xml,  
          4.                                               /WEB-INF/validation.xml" />  
          5. </plug-in>   

          注意加入<plug-in>標(biāo)簽的位置,該標(biāo)簽應(yīng)該放在struts配置文件中的最后,具體位置在元素<struts- config></struts-config>內(nèi)部,在<message-resources parameter="com.blog.struts.ApplicationResources" />之后,切記要注意位置,不然報(bào)錯(cuò)。
          其次,在寫法上,value的內(nèi)容中/WEB-INF/validator-rules.xml是默認(rèn)的,因?yàn)樵陧?xiàng)目使用struts框架時(shí)該文件已經(jīng)在 此目錄層次下面了,那么之后的/WEB-INF/validation.xml"又是什么呢?這里需要我們手動(dòng)在WEB-INF目錄下新建 validation.xml文件,這個(gè)文件有什么用?先看下其中寫的什么。
          Java代碼
          1. <form-validation>  
          2.     <global>  
          3.     </global>  
          4.     <formset>  
          5.         <form name="userForm">  
          6.             <field property="userName"  
          7.                 depends="required,minlength,maxlength">  
          8.                 <arg0 key="userForm.userName" />  
          9.                 <arg1 name="minlength" key="${var:min}"  
          10.                     resource="false" />  
          11.                 <arg1 name="maxlength" key="${var:max}"  
          12.                     resource="false" />  
          13.                 <var>  
          14.                     <var-name>min</var-name>  
          15.                     <var-value>6</var-value>  
          16.                 </var>  
          17.                 <var>  
          18.                     <var-name>max</var-name>  
          19.                     <var-value>20</var-value>  
          20.                 </var>  
          21.             </field>  
          22.             <field property="password"  
          23.                 depends="required,minlength,maxlength,mask">  
          24.                 <arg0 key="userForm.password" />  
          25.                 <arg1 name="minlength" key="${var:min}"  
          26.                     resource="true" />  
          27.                 <arg1 name="maxlength" key="${var:max}"  
          28.                     resource="true" />  
          29.                 <var>  
          30.                     <var-name>min</var-name>  
          31.                     <var-value>6</var-value>  
          32.                 </var>  
          33.                 <var>  
          34.                     <var-name>max</var-name>  
          35.                     <var-value>20</var-value>  
          36.                 </var>  
          37.                 <var>  
          38.                     <var-name>mask</var-name>  
          39.                     <var-value>^"w+$</var-value>  
          40.                 </var>  
          41.             </field>  
          42.             <field property="email" depends="required,email">  
          43.                 <arg0 key="userForm.email" />  
          44.             </field>  
          45.             <field property="name" depends="required,maxlength">  
          46.                 <arg0 key="userForm.name" />  
          47.                 <arg1 name="maxlength" key="${var:max}"  
          48.                     resource="false" />  
          49.                 <var>  
          50.                     <var-name>max</var-name>  
          51.                     <var-value>20</var-value>  
          52.                 </var>  
          53.             </field>            
          54.             <field property="tel" depends="required,mask">  
          55.                 <arg0 key="userForm.tel" />  
          56.                 <var>  
          57.                     <var-name>mask</var-name>  
          58.                     <var-value>^"(?("d{3,4})")?[-|]?("d{7,8})$</var-value>  
          59.                 </var>  
          60.             </field>  
          61.             <field property="address" depends="required">  
          62.                 <arg0 key="userForm.address" />  
          63.             </field>  
          64.         </form>  
          65.         <form name="categoryForm">  
          66.             <field property="categoryName" depends="required">  
          67.                 <arg0 key="categoryForm.categoryName" />  
          68.             </field>  
          69.         </form>  
          70.     </formset>  
          71. </form-validation>  

          Validation.xml:該配置文件是專供應(yīng)用程序使用的,其中所描述的是特定ActionForm會(huì)用到validation-rule.xml文件中的哪些驗(yàn)證器。

          1.<form-validation>元素
          <form-validation>元素是validation.xml文件的根元素,它包含兩個(gè)子元 素:<global>和<formset>元素。其中<global>元素可以出現(xiàn)零次或多 次,<formset>元素可以出現(xiàn)一次或多次。

          2.<global>元素
          <global>元素中通過<constant>子元素來定義常量表達(dá)式,每個(gè)<constant>子元素定義一個(gè)常量表達(dá)式,如果有多個(gè)常量表達(dá)式要定義則可以配置多個(gè)<constant>來實(shí)現(xiàn)。

          3.<formset>元素
          <formset>元素包括兩個(gè)子元素<constant>和<form>。<constant>元素可以出現(xiàn)零次或多次,<form>元素可以出現(xiàn)一次或多次。
          這里需要注意的是,在<form>標(biāo)簽中有包括<field>子元素。

          4.<field>元素
          <field>元素通過property屬性指定字段的名字,通過depends屬性指定具體的驗(yàn)證規(guī)則,驗(yàn)證規(guī)則來源于 validation-rule.xml中所寫的驗(yàn)證方法,這里我們要簡單介紹一下validation-rule.xml里面的驗(yàn)證規(guī)則是默認(rèn),那如果 我們有需要定義自己的驗(yàn)證規(guī)則也可以寫在里面。<field>元素可包含的子元素 為<msg>,<arg>,<var>。

          第二步
          把validator框架使用的消息文本添加到應(yīng)用的Resource Bundle中,如在ApplicationResources.properties中加入例如:
          Java代碼
          1. errors.header=<b><font color=ff0000><ul>  
          2. errors.footer=</ul></font></b>  
          3. errors.prefix=<li>  
          4. errors.suffix=</li>  
          5.   
          6. error.isexit="u7528"u6237"u540d"u5df2"u5b58"u5728"uff0c"u8bf7"u91cd"u65b0"u6ce8"u518c"uff01  
          7. error.username="u7528"u6237"u540d"u4e0d"u5408"u6cd5"uff0c"u8bf7"u91cd"u65b0"u586b"u5199"u7528"u6237"u540d"uff01  
          8. error.password="u5bc6"u7801"u4e0d"u5408"u6cd5"uff0c"u8bf7"u91cd"u65b0"u586b"u5199"u5bc6"u7801"uff01  
          9.   
          10. errors.required={0}"u4e3a"u5fc5"u586b"u5b57"u6bb5  
          11. errors.minlength={0}"u7684"u957f"u5ea6"u4e0d"u80fd"u5c0f"u4e8e{1}   
          12. errors.maxlength={0}"u7684"u957f"u5ea6"u4e0d"u80fd"u5927"u4e8e{1}   
          13. errors.email={0}"u5fc5"u987b"u4e3a"u6709"u6548"u90ae"u4ef6"u5730"u5740  
          14.   
          15. userForm.userName="u7528"u6237"u540d;  
          16. userForm.password="u5bc6"u7801;  
          17. userForm.email=Email;  
          18. userForm.name="u59d3"u540d;  
          19. userForm.sex="u6027"u522b;  
          20. userForm.tel="u8054"u7cfb"u7535"u8bdd;  
          21. userForm.address="u8054"u7cfb"u5730"u5740;  
          22. userForm.userType="u7528"u6237"u7c7b"u522b;  
          23.   
          24. categoryForm.categoryName="u7c7b"u522b"u540d"u79f0  



          第三步
          將Form的extends  ActionForm改為extends  ValidatorForm


          第四步
          在jsp頁面當(dāng)中,如果我們要?jiǎng)?chuàng)建一個(gè)在服務(wù)器端驗(yàn)證的頁面,我們只需要在控件之后添加<html:errors property="password"/>,即:
          <tr>
               <td>密碼:</td>
               <td><html:password property="password" /><html:errors property="password"/></td>
          </tr>
          注意<html:errors property="password"/>之中的property對應(yīng)的是form中定義的屬性。

          那么如果我們要?jiǎng)?chuàng)建一個(gè)在客戶端進(jìn)行驗(yàn)證的頁面,我們需要如下步驟:
          1.在<html:form></html:form>的外面加上<html:javascript formName="userForm"/>
          2.在<html:form>中加入屬性onsubmit=”return validateCardForm(this);”,即;
          <html:form action="/save_user" method="post" enctype="multipart/form-data" onsubmit="return validateUserForm(this);">
          3.同服務(wù)器端驗(yàn)證一樣<td><html:password property="password" /><html:errors property="password"/></td>
          重點(diǎn)
          使用validator進(jìn)行表單驗(yàn)證的步驟如上,其中最為關(guān)鍵的一步是,validation.xml文件中為表單配置驗(yàn)證規(guī)則的寫法。
          注意事項(xiàng)如下:
          <form-validation>
          <global>
          在<global>中定義的常量表達(dá)式,在文件的其余地方可以直接引用。
          即,這里配置的常量表達(dá)式是全局的
          寫法為:
          <constant>
          <constant-name>phone</constant-name>
          <constant-value>^"(?("d{3})")?[-|]?("d{8})$<constant-value>
          //定義一個(gè)名為:phone的正則表達(dá)式,3位區(qū)號+8位號碼
          </constant>
          </global>
          <formset>
          <form name="userForm">
          <field property="userName"
          //這里的property要與form表單屬性名對應(yīng)
          depends="required,minlength,maxlength">
          //這里的depends用于指定對該屬性使用什么驗(yàn)證規(guī)則,其規(guī)則來自于validator-rule.xml文件中所寫的規(guī)則。指定多個(gè)驗(yàn)證器時(shí),會(huì)依次調(diào)用,直到該表單通過所有驗(yàn)證。
          <arg0 key="userForm.userName" />
          //arg0對應(yīng)的是ApplicationResources.property中的{0},即:
          “errors.required={0}不能為空”,其作用是將arg0中key所對應(yīng)的資源文件中的“userForm.userName= 用戶名”的文中或者說是值替換到“errors.required={0}不能為空”中的{0},這樣頁面輸出的是“用戶名不能為空”;
          下面的arg1同理{1}
          Java代碼
          1.                 <arg1 name="minlength" key="${var:min}"  
          2.                     resource="false" />  
          3.                 <arg1 name="maxlength" key="${var:max}"  
          4.                     resource="false" />  
          5.                 <var>  
          6.                     <var-name>min</var-name>  
          7.                     <var-value>6</var-value>  
          8.                 </var>  
          9.                 //var對應(yīng)key="${var:min}"中的min  
          10.                 <var>  
          11.                     <var-name>max</var-name>  
          12.                     <var-value>20</var-value>  
          13.                 </var>  
          14.             </field>  
          15. </form>  
          16.     </formset>  
          17. </form-validation> 

          轉(zhuǎn):http://www.javaeye.com/topic/192579

          posted on 2009-07-09 10:17 找個(gè)美女做老婆 閱讀(383) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          本blog已經(jīng)搬到新家了, 新家:www.javaly.cn
           http://www.javaly.cn

          常用鏈接

          留言簿(6)

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 左贡县| 鹿泉市| 祁东县| 嘉义县| 临海市| 桂阳县| 于都县| 闸北区| 肃南| 乌恰县| 民乐县| 扎鲁特旗| 营口市| 左贡县| 泸溪县| 霞浦县| 阿巴嘎旗| 剑河县| 绩溪县| 宜宾县| 汕尾市| 临安市| 铁岭县| 微山县| 扶风县| 灯塔市| 马关县| 泊头市| 清河县| 安达市| 宁城县| 孝义市| 轮台县| 南乐县| 宝丰县| 塔河县| 南岸区| 布拖县| 南昌市| 德阳市| 古田县|