非字段校验和字段校验的底层是相同的,只是逻辑思维不相同而已。
字段校验的逻辑是:首先确定我去校验谁,然后确定拿谁去校验。
非字段校验的逻辑是:先确定我拿谁去校验,然后去校验谁。
下边分别选取一下这两种校验的片段,大家自己区别一下。
字段校验:
<field name="password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>password should not be blank!</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>password should be between ${minLength} and ${maxLength}</message>
</field-validator>
</field>
非字段校验
<validator type="requiredstring" short-circuit="false">
<param name="fieldName">username</param>
<param name="fieldName">password</param>
<param name="fieldName">repassword</param>
<message>${fieldName} should not be blank!</message>
</validator>
看来,只是顺序不同而已。不过我个人认为,如果程序中有很多类型相同的属性,比如大多数都是String,那么使用非字段校验会是非常简单的方式。