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

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

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

    [轉]關于struts中validate的幾種情況

    轉自:http://hi.baidu.com/helloween0809/blog/item/091c2ef5fd64d625bc3109ab.html

    這里采用了最新版本struts-1.2.7,是在struts-blank的基礎上演示的,為了以后的學習和參考用。

     

    一、在對應的Form Baens中重載validate方法

    在struts-config.xml文件中,action節點下有“validate”這樣一個屬性。在struts框架中,默認屬性是validate=”true”。所以如果想通過Form Baens的重載validate方法來驗證數據的話,可以不用理會這一點。題外話:如果你在struts-config.xml文件中,設置validate="false"的話,validate方法將不起作用。這一點同樣對Validate框架來驗證數據起作用。

     

    二、通過Validate框架來驗證數據

    1、首先在struts-config.xml文件中,追加如下代碼:

    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">

    <set-property property="pathnames"

    value="/WEB-INF/validator-rules.xml,/WEB-INF/validations.xml"/>

    <set-property property="stopOnFirstError" value="false"/>

    </plug-in>

     

    2、然后編寫自己的Form Baens,有兩種方式可供選擇:

    ① 寫的formBaen需要繼承ValidatorForm,而不是第一種方法中的ActionForm

    public class UserForm extends ValidatorForm {

    private String userId = "";

    private String password = "";

    public void setUserId(String userId) {

    this.userId = userId;

    }

    public String getUserId() {

    return userId;

    }

    。。。。。。

    然后配置struts-config文件

    <form-bean name="userForm"

    type="com.wxhx.presentation.UserForm"/>

    ② 配置struts-config文件

    <form-beans>

    <form-bean name=" userForm"

    type="org.apache.struts.validator.DynaValidatorForm">

    <form-property name=" userId" type="java.lang.String"/>

    <form-property name="password" type="java.lang.String"/>

    </form-bean>

    </form-beans>

    3、配置validation.xml文件

    <formset>

    <form name="userForm"> ----這里的userForm是Form Beans的名字

    <field

    property="userId"

    depends="required">

    <arg key="userForm.userId"/>

    </field>

    <field

    property="password"

    depends="required,mask">

    <arg key="userForm.password"/>

    <var>

    <var-name>mask</var-name>

    <var-value>^[0-9a-zA-Z]*$</var-value>

    </var>

    </field>

    </form>

    </formset>

    其中key="userForm.userId"和key="userForm.password"需要在資源文件中配置

    這里需要說明一點,例如:<arg key="userForm.password" resource="false"/>

    如果多了resource="false"這句話,那么它不會再從資源文件中去取,而是直接用key值來表示。

     

    以上是通過validatorForm- or DynaValidatorForm來實現Validate驗證的

     

    (附)

    現在有這樣一個問題,Form Beans可以被多個Action應用,而每個Action可能需要的驗證字段都不一樣。而在validation.xml中配置的驗證方式(如<form name="userForm">)是對這個Form Beans進行的。這樣的話,如何來驗證呢?

    你的Form Beans可以繼承ValidatorActionForm(當然可以直接配置DynaValidatorActionForm)。如下所示:

    public class UserForm extends ValidatorActionForm {

    ...

    }

    或是

    <form-bean name=" userForm "

    type="org.apache.struts.validator.DynaValidatorActionForm">

    ...

    </form-bean>

     

    struts-config文件配置如下:

    <action-mappings>

    <action path="/technology/createUser"

    type="com.wxhx.minihr.CreateUserAction"

    name="userForm"/>

     

    <action path="/technology/editUser"

    type="com.wxhx.minihr.EditUserAction"

    name="userForm"/>

    </action-mappings>

     

    validation.xml文件配置如下:

    <formset>

    <form name="/technology/ createUser ">----這里的采用的是action的path路徑

    <field property="city"

    depends="required">

    <arg0 key="prompt.city"/>

    </field>

    </form>

    <form name="/technology/editUser ">

    <field property="state"

    depends="required">

    <arg0 key="prompt.state"/>

    </field>

    </form>

    </formset>

     

    關于validator-rules.xml,定義了常用的一些規則,當然也可以自己追加新的規則。

    這里經常會看到msg="errors.required"字樣,也是通過資源文件中配置的,默認的資源如下:

    # -- validator --

    errors.invalid={0} is invalid.

    errors.maxlength={0} can not be greater than {1} characters.

    errors.minlength={0} can not be less than {1} characters.

    errors.range={0} is not in the range {1} through {2}.

    errors.required={0} is required.

    errors.byte={0} must be an byte.

    errors.date={0} is not a date.

    errors.double={0} must be an double.

    errors.float={0} must be an float.

    errors.integer={0} must be an integer.

    errors.long={0} must be an long.

    errors.short={0} must be an short.

    errors.creditcard={0} is not a valid credit card number.

    errors.email={0} is an invalid e-mail address.

    這在struts-blank的例子中會有,在開發項目的時候,注意這些默認資源

    關于自己定義規則,以后再作研究

     

    三、結合上面的兩種驗證

    如果即在Form Beans中重載了validate方法,又啟用了Validate框架,那會是什么效果呢?

    由于要啟用Validate框架,Form Beans需要繼承ValidatorForm,查看ValidatorForm的源代碼,發現validate方法已經作了處理(真是為Validate框架所服務的)。

    那么在Form Beans中重載了validate方法的話,就會覆蓋原有ValidatorForm中對應的功能,所以如果想一起用的話,需要在Form Beans的validate方法中調用errors = super.validate(mapping, request);這句代碼是啟用Validate框架所要做的工作,然后可以判斷errors再作下一步的處理。

    當然也可以先做Form Beans中的validate方法,然后啟用Validate框架,要看具體情況而定。

     

    四、啟用客戶端驗證

    也是結合validation.xml來驗證的,我把validation.xml相關的內容在復制下來,便于看清楚:

    <formset>

    <form name="userForm"> ----這里的userForm是Form Beans的名字

    <field

    property="userId"

    depends="required">

    <arg key="userForm.userId"/>

    </field>

    <field

    property="password"

    depends="required,mask">

    <arg key="userForm.password"/>

    <var>

    <var-name>mask</var-name>

    <var-value>^[0-9a-zA-Z]*$</var-value>

    </var>

    </field>

    </form>

    </formset>

     

    ①在需要客戶端驗證的jsp中加上這么一句<html:javascript formName=" userForm "/>
    其中formName就是validation.xml中<form name="userForm">所對應的內容

    ②在<html:form中追加一個屬性onsubmit="return validateUserForm(this);"

    它的語法為:return validate + struts-config.xml中定義的form-bean名稱 + (this);

    ③追加<scriptlanguage="Javascript1.1" src="staticJavascript.jsp"></script>

    staticJavascript.jsp的內容為:

    <%@ page language="java" %>

    <%-- set document type to Javascript(addresses a bug in Netscape according

    to a web resource --%>

    <%@ page contentType="application/x-javascript" %>

    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

    <html:javascript dynamicJavascript="false" staticJavascript="true"/>

    這只是一種方式,還有其他簡潔的(具體為啥這樣,不是很明白,希望得到)

    比如:追加onsubmit="return validateUserForm(this);"

    <html:javascript formName="userForm" staticJavascript="true"/>

    posted on 2008-04-11 12:13 hijackwust 閱讀(1125) 評論(0)  編輯  收藏


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


    網站導航:
     
    <2008年4月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    導航

    統計

    常用鏈接

    留言簿(6)

    隨筆檔案(57)

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产成人精品无码区花野真一| 亚洲成a人片在线观看无码专区| 亚洲在成人网在线看| 精品视频在线免费观看| 亚洲乱码精品久久久久..| 国产成人无码精品久久久久免费| 亚洲乱码中文字幕手机在线| 免费无码一区二区| 亚洲一区无码精品色| a级大片免费观看| 亚洲VA中文字幕不卡无码| 久久青草免费91观看| 亚洲熟妇无码爱v在线观看| 久草视频在线免费| 中文字幕亚洲码在线| 国产极品美女高潮抽搐免费网站| 国产成人va亚洲电影| 国产乱辈通伦影片在线播放亚洲| 黄视频在线观看免费| 西西人体44rt高清亚洲| 182tv免费视视频线路一二三| 亚洲一区二区三区亚瑟| 老司机永久免费网站在线观看| 污污视频免费观看网站| 亚洲日韩欧洲乱码AV夜夜摸| 久久99精品视免费看| 亚洲国产区男人本色在线观看| 四虎影视免费永久在线观看| 中文字幕在线视频免费| 久久久久亚洲AV无码专区体验| 免费毛片在线看片免费丝瓜视频| 特级毛片全部免费播放a一级| 亚洲日本乱码在线观看| 最近的中文字幕大全免费8 | 国产日产成人免费视频在线观看| 免费又黄又爽又猛大片午夜 | 国产亚洲精品无码专区| 狼群影院在线观看免费观看直播| 亚洲乱妇老熟女爽到高潮的片 | 嫩草成人永久免费观看 | 色网站在线免费观看|