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

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

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

    好·色之徒

    關于struts中validate的幾種情況

    Posted on 2005-08-02 17:51 城市劣人 閱讀(6426) 評論(4)  編輯  收藏 所屬分類: Struts

    已經轉移到 好·色之徒--我的博客、我的生活

    (說明)這里采用了最新版本 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"/>

    Feedback

    # re: 關于struts中validate的幾種情況  回復  更多評論   

    2006-10-22 08:43 by 吳明宇
    我是struts框架的初學者,非常感謝,我獲益非淺。

    # re: 關于struts中validate的幾種情況  回復  更多評論   

    2006-11-10 10:34 by 小蟲[匿名]
    不錯, 比較全面

    # re: 關于struts中validate的幾種情況[未登錄]  回復  更多評論   

    2007-08-07 10:37 by 小強
    樓主是個牛人 找了好久終于找到了

    # re: 關于struts中validate的幾種情況  回復  更多評論   

    2009-06-27 12:00 by 龍兒
    我想知道VALIDATE驗證是從什么時候開始的。驗證之后又執行的是什么?
    就框架自帶的VALIDAE說明吧

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


    網站導航:
     

    posts - 39, comments - 91, trackbacks - 0, articles - 1

    Copyright © 城市劣人

    好·色之徒
    主站蜘蛛池模板: 男人进去女人爽免费视频国产| 亚洲日韩AV一区二区三区中文| 美女露隐私全部免费直播| 性盈盈影院免费视频观看在线一区| 亚洲色av性色在线观无码| 中文字幕免费在线观看| 久久亚洲AV无码精品色午夜麻豆 | 一级毛片一级毛片免费毛片| 四虎影视在线永久免费看黄| 美女又黄又免费的视频| 国产成人99久久亚洲综合精品| 一级一黄在线观看视频免费| 国产成人综合亚洲AV第一页| 光棍天堂免费手机观看在线观看 | 亚洲精品第一国产综合野| 四虎成人免费观看在线网址| 亚洲av永久中文无码精品综合| 国产乱子伦精品免费无码专区| 一级毛片aaaaaa视频免费看| 亚洲精品无码久久久久去q | 免费高清在线影片一区| 免费人成大片在线观看播放| 亚洲精品美女久久777777| 8x8x华人永久免费视频| 亚洲色成人网站WWW永久四虎| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 亚洲毛片不卡av在线播放一区| 国产在线国偷精品免费看| 久久久久久久亚洲Av无码| 午夜福利不卡片在线播放免费| 亚洲AV无码男人的天堂| 亚洲综合国产精品第一页| 久久久久久成人毛片免费看 | 亚洲国产美女视频| 又黄又爽一线毛片免费观看| 国产免费一区二区视频| 国内精品久久久久影院亚洲| 亚洲女同成人AⅤ人片在线观看| 免费国产黄网站在线观看视频| 亚洲日韩国产一区二区三区在线| 亚洲精品美女久久久久99小说|