11

在 Spring Webflow 2.0.x 的上下文中......

我通过在我的messages.properties

typeMismatch={0} contains invalid data.

这工作正常。

问题是,如果typeMismatch发生错误的字段是“必填”,那么我也会收到缺少必填字段的错误,我猜这是合乎逻辑的,因为提交的值从未绑定。(“必需”在 Commons Validation XML 文件中定义)

因此,当字段仅由于类型不匹配而丢失时,我不想看到“XXX 是必填字段”错误消息。我该如何解决这个问题?我考虑过覆盖initBinder()FormAction 但很快就无处可去.....

4

2 回答 2

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>
于 2012-04-10T17:09:07.250 回答
1

您有很多选择,按优先顺序排列:

  • 有选择地设置消息typeMismatch.target.yourFieldNametypeMismatch.int资源文件

  • 实现您自己的验证器,以便在绑定步骤之前整数解析失败时发送专用消息

  • 创建一个 BindingErrorProcessor 来处理不同类型的解析问题

于 2012-03-13T08:51:12.583 回答