<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java學習

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

     

    表單驗證:使用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"這么句代碼,否則,驗證機制將可能不會運行。
    另外,配置文件中還須加入以下代碼,表示使用插件:
    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>標簽的位置,該標簽應該放在struts配置文件中的最后,具體位置在元素<struts- config></struts-config>內(nèi)部,在<message-resources parameter="com.blog.struts.ApplicationResources" />之后,切記要注意位置,不然報錯。
    其次,在寫法上,value的內(nèi)容中/WEB-INF/validator-rules.xml是默認的,因為在項目使用struts框架時該文件已經(jīng)在 此目錄層次下面了,那么之后的/WEB-INF/validation.xml"又是什么呢?這里需要我們手動在WEB-INF目錄下新建 validation.xml文件,這個文件有什么用?先看下其中寫的什么。
    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:該配置文件是專供應用程序使用的,其中所描述的是特定ActionForm會用到validation-rule.xml文件中的哪些驗證器。

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

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

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

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

    第二步
    把validator框架使用的消息文本添加到應用的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頁面當中,如果我們要創(chuàng)建一個在服務(wù)器端驗證的頁面,我們只需要在控件之后添加<html:errors property="password"/>,即:
    <tr>
         <td>密碼:</td>
         <td><html:password property="password" /><html:errors property="password"/></td>
    </tr>
    注意<html:errors property="password"/>之中的property對應的是form中定義的屬性。

    那么如果我們要創(chuàng)建一個在客戶端進行驗證的頁面,我們需要如下步驟:
    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ù)器端驗證一樣<td><html:password property="password" /><html:errors property="password"/></td>
    重點
    使用validator進行表單驗證的步驟如上,其中最為關(guān)鍵的一步是,validation.xml文件中為表單配置驗證規(guī)則的寫法。
    注意事項如下:
    <form-validation>
    <global>
    在<global>中定義的常量表達式,在文件的其余地方可以直接引用。
    即,這里配置的常量表達式是全局的
    寫法為:
    <constant>
    <constant-name>phone</constant-name>
    <constant-value>^"(?("d{3})")?[-|]?("d{8})$<constant-value>
    //定義一個名為:phone的正則表達式,3位區(qū)號+8位號碼
    </constant>
    </global>
    <formset>
    <form name="userForm">
    <field property="userName"
    //這里的property要與form表單屬性名對應
    depends="required,minlength,maxlength">
    //這里的depends用于指定對該屬性使用什么驗證規(guī)則,其規(guī)則來自于validator-rule.xml文件中所寫的規(guī)則。指定多個驗證器時,會依次調(diào)用,直到該表單通過所有驗證。
    <arg0 key="userForm.userName" />
    //arg0對應的是ApplicationResources.property中的{0},即:
    “errors.required={0}不能為空”,其作用是將arg0中key所對應的資源文件中的“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對應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 找個美女做老婆 閱讀(386) 評論(0)  編輯  收藏


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


    網(wǎng)站導航:
     

    導航

    統(tǒng)計

    公告

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

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲短视频男人的影院| 亚洲黄片手机免费观看| 久久精品国产亚洲av日韩| 美女无遮挡拍拍拍免费视频 | 亚洲成av人在片观看| 亚洲熟妇无码AV| 欧美a级在线现免费观看| 亚洲色最新高清av网站| 毛片a级毛片免费观看免下载| 亚洲欧洲无码一区二区三区| 日韩在线免费看网站| 日本永久免费a∨在线视频| 亚洲男女内射在线播放| 三年片免费高清版 | 免费下载成人电影| 亚洲AV无码精品蜜桃| 成人免费看黄20分钟| 国产精品亚洲片在线花蝴蝶 | 88av免费观看入口在线| 亚洲六月丁香六月婷婷蜜芽| 免费无遮挡无码视频网站| 国产AV无码专区亚洲AV蜜芽 | 亚洲人成免费网站| 亚洲乱码中文字幕在线| 亚洲精品麻豆av| 在线看片免费人成视频播| 久久亚洲精品成人AV| 国内一级一级毛片a免费| 又大又硬又粗又黄的视频免费看| 亚洲AV永久无码区成人网站| 国产精彩免费视频| 久久精品亚洲日本波多野结衣| 亚洲区日韩区无码区| 鲁大师在线影院免费观看| 亚洲国产精品精华液| 亚洲区小说区图片区QVOD| 亚洲视频在线免费看| 亚洲精品国产精品| 亚洲熟妇无码乱子AV电影| 国产va免费精品观看精品| 久青草国产免费观看|