在struts2中使用validation校驗框架,如果想對某個類似于execute方法進行校驗,xml的校驗文件的命名規(guī)則為action名-方法名-validation.xml,對應(yīng)action中繼承另外一個action兩者都有校驗xml,那么校驗順序如下:
RegisterAction extends BaseAction,如果兩個action里面要對方法進行校驗,那校驗文件的搜索路徑如下:
BaseAction-validation.xml,BaseAction-Xxx-validation.xml,RegisterAction-validation.xml,Register-Xxx-validation.xml
短路校驗,在字段校驗或者非字段校驗中加入:short-circuit=
"true",
如果某個被標(biāo)記為短路的校驗器失敗了,將會阻止其他后續(xù)的校驗器的進行,然后一個錯誤(action錯誤或者字段錯誤,取決于校驗器的類型)將會被添加到被校驗的對象的ValidationContext中:
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="email">
<field-validator type="required" short-circuit="true">
<message>You must enter a value for email.</message>
</field-validator>
<field-validator type="email" short-circuit="true">
<message>Not a valid e-mail.</message>
</field-validator>
</field>
<field name="email2">
<field-validator type="required">
<message>You must enter a value for email2.</message>
</field-validator>
<field-validator type="email">
<message>Not a valid e-mail2.</message>
</field-validator>
</field>
<validator type="expression">
<param name="expression">email.equals(email2)</param>
<message>Email not the same as email2</message>
</validator>
<validator type="expression" short-circuit="true">
<param name="expression">email.startsWith('mark')</param>
<message>Email does not start with mark</message>
</validator>
</validators>
在上面的例子中,實際的校驗器執(zhí)行是這樣的:
- Plain Validator 1
- Plain Validator 2
- email字段的字段校驗器
- email2字段的字段校驗器
因為普通校驗器2是短路的,如果它的校驗失敗,它會導(dǎo)致email字段的校驗器和email2字段的校驗器不會被執(zhí)行.
-------------------------------------------------------------------------------------------------
PS:本博客文章,如果沒有注明是有“轉(zhuǎn)”字樣,屬于本人原創(chuàng)。如果需要轉(zhuǎn)載,務(wù)必注明作者和文章的詳細出處地址,否則不允許轉(zhuǎn)載,多謝合作!
posted on 2008-11-29 21:35
apple0668 閱讀(1147)
評論(0) 編輯 收藏 所屬分類:
struts2