RegisterAction extends BaseAction,如果兩個action里面要對方法進行校驗,那校驗文件的搜索路徑如下:
BaseAction-validation.xml,BaseAction-Xxx-validation.xml,RegisterAction-validation.xml,Register-Xxx-validation.xml
短路校驗,在字段校驗或者非字段校驗中加入:short-circuit="true",如果某個被標記為短路的校驗器失敗了,將會阻止其他后續的校驗器的進行,然后一個錯誤(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 Validators for email field --> <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 Validators for email2 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> <!-- Plain Validator 1 --> <validator type="expression"> <param name="expression">email.equals(email2)</param> <message>Email not the same as email2</message> </validator> <!-- Plain Validator 2 --> <validator type="expression" short-circuit="true"> <param name="expression">email.startsWith('mark')</param> <message>Email does not start with mark</message> </validator> </validators>
在上面的例子中,實際的校驗器執行是這樣的:
- Plain Validator 1
- Plain Validator 2
- email字段的字段校驗器
- email2字段的字段校驗器
因為普通校驗器2是短路的,如果它的校驗失敗,它會導致email字段的校驗器和email2字段的校驗器不會被執行.
-------------------------------------------------------------------------------------------------
PS:本博客文章,如果沒有注明是有“轉”字樣,屬于本人原創。如果需要轉載,務必注明作者和文章的詳細出處地址,否則不允許轉載,多謝合作!