欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Validator框架JS檢驗功能 - ℡瀦娃娃ゞɑ - JavaEye技術(shù)網(wǎng)站
在之前的校驗案例中我們使用了validator框架中的”required、minLength、maxLength”這幾種校驗規則,對于這些規則我們知道都配置在validator-rules.xml文件中了,縱觀(guān)里面的規則,我們可發(fā)現還有很多其它的校驗規則,其中“mask”可以校驗正則表達式,“date”可校驗日期格式,“email”可校驗郵件的格式,可見(jiàn)這框架的強大之處,我們使用”date”和”email”分別來(lái)校驗表單中的日期和郵件輸入的格式,首先在表單中增加兩個(gè)這樣的輸入域,然后在userForm中對應的增加字段,然后在校驗文件中增加如下兩個(gè)字段的校驗:
<field property="email"
depends="email">
<arg   key="prompt.email"/>
</field>
<field property="birthday"
depends="date">
<arg   key="prompt.date"/>
<var>
<var-name>datePattern</var-name>
<var-value>yyyy-MM-dd</var-value>
</var>
</field>
校驗郵件格式跟之前的幾個(gè)校驗沒(méi)啥區別,但是日期格式的校驗時(shí)我們得設置日期匹配的類(lèi)型變量,這樣就能達到日期和郵件的校驗了,對于這種自身的校驗之外,還有一種校驗,如確認密碼和密碼是否是相同的這樣的校驗則不是單純校驗本身了,而是跟別的進(jìn)行一個(gè)對比,這時(shí)另一種校驗規則出現了,“validwhen”,它是專(zhuān)門(mén)來(lái)校驗像這種復雜類(lèi)型的校驗規則,所以我們在表單中再添加一個(gè)文本域叫password2,然后在formbean中添加相應的字段,最后我們在校驗文件中進(jìn)行配置,用這種校驗時(shí)得注意,因為它的消息KEY和”required”校驗器的是一樣的,都是“errors.required”,所以這時(shí)我們同時(shí)用上這兩個(gè)校驗規則,從中來(lái)說(shuō)明一個(gè)問(wèn)題,這個(gè)字段的校驗如下:
<field property="password2"
depends="required,validwhen">
<msg key="errors.password2" name="validwhen"/>
<arg   key="prompt.password2"/>
<var>
<var-name>test</var-name>
<var-value>(*this* == password)</var-value>
</var>
</field>
在使用“validwhen”校驗器進(jìn)行校驗時(shí)我們得設置test變量,在使用這個(gè)校驗器時(shí)我們還面臨一個(gè)問(wèn)題,之前也說(shuō)過(guò)了,它的消息KEY跟”required”是一樣的,當對一個(gè)字段進(jìn)行校驗時(shí)這兩個(gè)校驗規則并存時(shí)就應該采取相應的措施來(lái)避免沖突的產(chǎn)生,我們讓required還保持默認,所以我們用arg來(lái)進(jìn)行參數的配置,而validwhen則不能采用默認了,我們應該改變它的消息KEY,這時(shí)我們可用msg標簽來(lái)進(jìn)行替換,name指的是哪個(gè)校驗器發(fā)生時(shí),key則表示會(huì )用指定的消息KEY,這是使用這個(gè)校驗器的一個(gè)需要注意的問(wèn)題。
可能在實(shí)際中我們會(huì )遇到如下情況:如果兩個(gè)Action關(guān)聯(lián)的是同一個(gè)ActionForm,但它們的校檢規則可能不一樣,在A(yíng)ctionForm中該如何編寫(xiě)validate方法?例如,增加用戶(hù)和修改用戶(hù)時(shí)可使用同一個(gè)ActionForm,但是修改用戶(hù)不需要校驗密碼:
<form name=”userForm” type=”….”/>
<action path=”/addUser” name=”userForm” type=”…..”/>
<action path=”/editUser” name=”userForm” type=”….”/>
像這樣的需求我們怎么來(lái)實(shí)現呢?ValidatorActionForm就是用來(lái)解決這樣的問(wèn)題的,我們讓我們的Formbean來(lái)繼承它而代替ValidatorForm,然后對于這兩個(gè)Action有不同的校驗規則,所以我們得在validation.xml中配置兩套校驗規則,而校驗規則的命名是以action的path路徑為名,這樣對于每個(gè)Action請求就會(huì )根據請求名稱(chēng)來(lái)到validator.xml中找到不同的校驗規則,重要原因還是ValidatorActionForm這個(gè)類(lèi)起的作用,原來(lái)我們用ValidatorForm時(shí)是根據Action所關(guān)聯(lián)的Fomrbean的名稱(chēng)來(lái)進(jìn)行校驗規則匹配的,而這個(gè)類(lèi)則是根據Action的path路徑來(lái)找相應的校驗規則的,所以這樣就解決了這種需求了,validator.xml中的模擬寫(xiě)法就如下:
<form-validation>
<formset>
<form name="/editUser">
<field property="name"
depends="required">
<arg   key="prompt.username"/>
</field>
...
</form>
<form name="/addUser">
<field property="name"
depends="required">
<arg   key="prompt.username"/>
</field>
...
</form>
</formset>
在學(xué)struts的時(shí)候我們知道還有一種動(dòng)態(tài)ActionForm,那如果是這種情況下用validator框架來(lái)對進(jìn)行校驗又該如何做呢?struts又提供了一個(gè)類(lèi)專(zhuān)門(mén)來(lái)解決這樣的問(wèn)題的,叫“DynaValidatorForm”,我們在struts-config.xml中把動(dòng)態(tài)ActionForm配成如下:
<form-bean name="userForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="name" type="java.lang.String"/>
<form-property name="password" type="java.lang.String"/>
</form-bean>
這時(shí)我們在validation.xml針對這個(gè)formbean配置一套校驗規則既可實(shí)現校驗,其實(shí)跟自己手動(dòng)編寫(xiě)的formbean一樣,對于多個(gè)Action引用同一個(gè)動(dòng)態(tài)formbean但其校驗規則不同的情況,我們將動(dòng)態(tài)formbean配成DynaValidatorActionForm,既可完成這樣的需求,原理跟ValidatorActionForm一樣。
此對對于用JavaScript校驗功能用這個(gè)校驗框架也能辦到,而不用我們自己在客戶(hù)端進(jìn)行代碼編寫(xiě),要用使用Validator的JavaScript校驗功能,要在JSP頁(yè)面中使用struts的<html:javascriptformName=”xxx”>標簽,其中的xxx是某個(gè)校驗域的名稱(chēng),對于我們這個(gè)例子則是userForm,然后在需要驗證的表單的onsubmit屬性中調用“returnvalidateXxx()”方法,其中validateXxx方法可能通過(guò)<html:javascript>的method屬性來(lái)改變,默認是配置的formName的名稱(chēng),于是我們在用戶(hù)注冊JSP中加入如下語(yǔ)句來(lái)生成Javascript校驗代碼:
<html:javascript formName="userForm"/>
這時(shí)我們訪(fǎng)問(wèn)此頁(yè)面,然后查看其源代碼就會(huì )發(fā)現生成validateUserForm()的校驗方法:
假如我們想改變生成的方法名稱(chēng),可用method屬性來(lái)進(jìn)行改變:
<html:javascript formName="userForm" method=”xxx”/>
這里我們采用默認的方法,知道這個(gè)方法之后,然后我們在表單的submit方法中進(jìn)行訪(fǎng)問(wèn):
<html:form action="/RegUser" onsubmit="return validateUserForm(this);">
….
</html:form>
然后表單就具有JavaScript校驗功能了:
但是關(guān)于struts validator校驗器生成的javascript校驗功能,還有一個(gè)問(wèn)題,給合這個(gè)例子來(lái)看,當我們什么都不填寫(xiě)時(shí)只會(huì )彈出一個(gè)對話(huà)框,但是如果密碼長(cháng)度很短,就會(huì )彈出兩個(gè)對話(huà)框,效果如下:
從這兩個(gè)對話(huà)框可以看出規律,就是對于多個(gè)表單字段元素違背的同一個(gè)校驗規則的信息都顯示在一個(gè)對話(huà)框,其實(shí)沒(méi)必要一下顯示多個(gè)對話(huà)框,我們希望只彈出第一個(gè)對話(huà)框,只有修完第一個(gè)對話(huà)框的問(wèn)題后才單獨彈出第二個(gè)對話(huà)框的內容,這就涉及到Javascript的短路功能了,而要實(shí)現短路功能我們只要在struts配置文件中配validator插件中將”stopOnFirstError”屬性設為”true”既可,如:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
<set-property property="stopOnFirstError" value="true"/>
</plug-in>
這樣就只會(huì )彈出一個(gè)對話(huà)框來(lái)顯示同組的校驗錯誤信息,等修改好這一組后再會(huì )彈出第二個(gè)對話(huà)框,顯示效果:
如果要為ValidatorActionForm對應的表單生成前臺的javaScript校驗代碼,可以使用類(lèi)似如下的代碼:<html:javascriptformName="/addUser"/>,其中的formName與校驗域的名字完全一樣,生成的javascript方法則是按formBean的名稱(chēng)來(lái)的。
360pskdocImg_7
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Pragmatic Struts
Struts中FormBean與國際化
struts1配置文件中action的常用屬性
Struts vs webwork 中文
現在學(xué)什么框架比較好
Struts第4天
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久