在Spring Webflow 2.0.x的上下文中......
我处理表单绑定“typemismatches”,即尝试将String映射到Integer字段,在messages.properties
typeMismatch={0} contains invalid data.
这很好用。
问题是,如果发生typeMismatch
错误的字段是“必需”,那么我还会收到缺少的必填字段的错误,这是合乎逻辑的我猜是因为提交的值从未绑定。 (“必需”在Commons Validation XML文件中定义)
因此,当字段仅因typeMismatch而丢失时,我不希望看到“XXX is required field”错误消息。我该如何解决这个问题?我考虑过在FormAction上覆盖initBinder()
,但很快就没有了......
答案 0 :(得分:2)
与Yves提到的一样,在这三种方法中,我使用了自定义验证器方法,非常简单。您可以使用自定义验证程序检查表单字段是否已包含所需的xml错误消息。如果该字段没有错误,那么您可以检查字符串验证。这样它只会显示一个。
您可以使用的另一种方法是尝试多个xml验证,一个是必需的,另一个是检查特定正则表达式的掩码。在您的情况下,如果您的字段是整数字段,那么您可以使用正则表达式仅检查数字来执行掩码。 xml中掩码,必需或必需掩码的顺序决定哪个消息获得更高的首选项。
例如:
<field property="somefield" depends="required,mask" page="2">
<arg key="somelabel"/>
<var>
<var-name>mask</var-name>
<var-value>${somepattern}</var-value>
</var>
</field>
答案 1 :(得分:1)
根据偏好,您有很多选择:
在资源文件中有选择地设置消息typeMismatch.target.
yourFieldName 或typeMismatch.int
实施own Validator,以便在绑定步骤之前整数解析失败时发送专用消息
创建一个BindingErrorProcessor来处理不同的kind of parsing issues