短路校验器

简介:

短路校验器

xwork-validator-1.0.3.dtd文件中可以看到,校验规则文件的<validator .../>元素和<field-validator .../>元素可以指定一个可选的short-circuit属性,这个属性指定该校验器是否是短路校验器,该属性的默认值是false,即默认是非短路校验器。

短路校验器其实是非常有用的,读者朋友可以翻回去看如图4.14所示的页面,在密码输入框的上面看到两行校验提示信息:

您必须输入密码!

您输入的密码只能是字母和数字,且长度必须在425之间!

这种提示信息是多么的不友好啊,浏览者此时完全没有输入密码,而我们的应用一下子就显示了两条提示信息(而且,第二条校验提示完全是多余的,完全没有输入密码,当然长度不在425之间)。通常的做法是:如果浏览者完全没有为某个输入框输入任何内容,系统应该仅输出第一行提示信息,而不是一次输出所有的校验提示。

为了达到这种效果,我们应该采用短路校验器。采用短路校验器只需要在<validator .../>元素或<field-validator .../>元素中增加short-circuit="true"即可。

修改上面的配置文件,对于采用字段校验器的校验规则文件,将用户名必填和密码必填校验规则配置成短路校验器。修改后的校验文件片段如下。

程序清单:codes\04\4.2\short-cut\WEB-INF\src\org\crazyit\app\action\RegistAction-validation.xml

<!-- 校验Actionname属性 -->

<field name="name">

     <!-- 指定name属性必须满足必填规则 -->

     

          

          

     

     <!-- 指定name属性必须匹配正则表达式 -->

     

          

          

     

</field>

<!-- 校验Actionpass属性 -->

<field name="pass">

     <!-- 指定pass属性必须满足必填规则 -->

     

          

          

     

     <!-- 指定pass属性必须满足匹配指定的正则表达式 -->

     

          

          

     

</field>

在上面的配置文件中,将userpass的必填校验器配置成短路校验器。对于同一个字段内的多个校验器,如果一个短路校验器校验失败,其他校验器都根本不会继续校验。

将校验规则文件修改成上面文件所示的样式后,如果依然不输入用户名和密码,直接提交该请求,将看到如图4.15所示的页面。

 

 

4.15  短路校验器的效果

相比之下,在一个<field .../>元素内定义字段校验器,比使用带有一个fieldName参数的<validator .../>元素好得多,而且XML代码本身也清晰得多(字段分组更清晰了)。因此,笔者更倾向于使用字段校验器风格。

4.15所使用的是服务器端短路校验器风格,如果使用客户端短路校验器风格(修改表单页的s:form标签,增加validate="true"),将看到如图4.16所示的效果。

从图4.16中可以看出,当在客户端校验中使用短路特性时,第一个表单域校验失败时将导致系统不会校验其他表单域。

 

 

 

4.16  客户端校验中使用短路特性

 


 

本文转自 

fkJava李刚 51CTO博客,原文链接:http://blog.51cto.com/javaligang/882730 ,如需转载请自行联系原作者

相关文章
|
18天前
什么是短路表达式?
什么是短路表达式?
14 1
|
21天前
|
Java Spring
Spel 表达式
在开发中,模板占位和参数动态替换常使用Spring的SpEL表达式。SpEl能从注解获取方法参数
12 0
|
2月前
|
JavaScript
短路表达式
短路表达式 短路表达式
22 0
|
3月前
|
Java
逻辑运算符和短路求值
逻辑运算符和短路求值
20 0
|
6月前
|
存储
短路时间常数法
短路时间常数法是一种用于分析电路的动态响应的方法,特别适用于分析电路的短路响应。它基于电路的短路时间常数,用于描述电路响应的快慢程度。
124 0
|
9月前
逻辑判断使用
逻辑判断使用
27 1
|
7月前
关于短路操作
在逻辑与&& 或者 逻辑或 || 的运算中,表达式1满足要求,表达式2不再运算的操作即为短路操作
25 0
|
8月前
|
前端开发
2021-08-12参数绑定,类型转换,数据校验,处理异常
2021-08-12参数绑定,类型转换,数据校验,处理异常
27 0
|
Go 开发者
短路与和短路或|学习笔记
快速学习短路与和短路或
171 0
|
10月前
逻辑操作符的短路现象
逻辑操作符的短路现象 1.逻辑操作符 2.逻辑操作符的短路
51 0