在没有输出用户名的情况下,校验出多个警告,我们要的效果应该是,没有输入时,只出现第一个!
<!-- 校验文件的根元素 --> <validators> <!-- 校验Action的name属性 --> <field name="name"> <!-- 指定name属性必须满足必填规则 --> <field-validator type="requiredstring" short-circuit="true"> <param name="trim">true</param> <!-- 如果校验失败,输出name.requried对应的国际化信息 --> <message>${getText("name.requried")}</message> </field-validator> <!-- 指定name属性必须匹配正则表达式 --> <field-validator type="regex"> <param name="expression"><![CDATA[(\w{4,25})]]></param> <!-- 如果校验失败,输出name.regex对应的国际化信息 --> <message>${getText("name.regex")}</message> </field-validator> </field> <!-- 校验Action的pass属性 --> <field name="pass"> <!-- 指定pass属性必须满足必填规则 --> <field-validator type="requiredstring" short-circuit="true"> <param name="trim">true</param> <!-- 如果校验失败,输出pass.requried对应的国际化信息 --> <message>${getText("pass.requried")}</message> </field-validator> <!-- 指定pass属性必须满足匹配指定的正则表达式 --> <field-validator type="regex"> <param name="expression"><![CDATA[(\w{4,25})]]></param> <!-- 如果校验失败,输出pass.regex对应的国际化信息 --> <message>${getText("pass.regex")}</message> </field-validator> </field> <!-- 指定age属性必须在指定范围内--> <field name="age"> <field-validator type="int"> <param name="min">1</param> <param name="max">150</param> <!-- 如果校验失败,输出age.range对应的国际化信息 --> <message>${getText("age.range")}</message> </field-validator> </field> <!-- 指定birth属性必须在指定范围内--> <field name="birth"> <field-validator type="date"> <!-- 下面指定日期字符串时,必须使用本Locale的日期格式 --> <param name="min">1900-01-01</param> <param name="max">2050-02-21</param> <!-- 如果校验失败,输出birth.range对应的国际化信息 --> <message>${getText("birth.range")}</message> </field-validator> </field> </validators>
修改后以上校验规则还是显示如下:
这是校验器短路的效果
上图使用的是服务器端校验,可见没有下图的效果好!
上图是使用客户端校验器风格,在(s:form 标签 增加 validate="true")
效果是:当不输入时,只有输出输入用户名(如上图),当输入用户名不合要求时(如下图):
完整代码附件中: