验证struts 2中的双字段

时间:2011-04-12 12:08:07

标签: validation struts2

我的一个struts 2形式中有一个字段“length”。 “长度”的数据类型是“双倍”。我在XML文件中应用了“双重”验证。但是当我在“长度”文本字段中键入字母时,它会将错误消息显示为

Invalid field value for field "length"

我不希望此消息显示如下。此消息由struts 2本身生成,而不是由我输入。我想,这个消息来自数据转换失败。我还应用了“转换”验证器,但上面的错误信息仍然显示出来。请提出解决方案。

提前致谢。

2 个答案:

答案 0 :(得分:3)

你很幸运。这个文本是可定制的。

文本在xwork jar中的xwork-messages.properties中定义。您可以通过将以下内容添加到全局i18n资源包来覆盖它:

xwork.default.invalid.fieldvalue=Invalid field value for field "{0}".

正如您所猜测的,所有类型转换失败都会出现此错误消息。 XWorkConverter类有一些有用的javadoc:

  

在类型转换期间发生的任何错误可能希望报告,也可能不希望报告。例如,报告输入“abc”无法转换为数字可能很重要。另一方面,报告空字符串“”无法转换为数字可能并不重要 - 尤其是在难以区分未输入值的用户与输入空白值的Web环境中。

     

默认情况下,使用通用的i18n键 xwork.default.invalid.fieldvalue 报告所有转换错误,您可以覆盖它(默认文本为字段“xxx的无效字段值”全局i18n资源包中的“,其中xxx是字段名称。”

     

但是,有时您可能希望基于每个字段覆盖此消息。您可以使用模式 invalid.fieldvalue.xxx 添加与您的操作(Action.properties)关联的i18n密钥,其中xxx是字段名称。

     

重要的是要知道这些错误都不会直接报告。而是将它们添加到ActionContext中名为 conversionErrors 的地图中。有几种方法可以访问此映射,并相应地报告错误。

答案 1 :(得分:0)

试试这个,

<field name="percentage">
    <field-validator type="double">
        <param name="minExclusiveExpression">${minExclusiveValue}</param>
        <param name="maxExclusiveExpression">${maxExclusiveValue}</param>
        <message>Percentage needs to be between ${minExclusive} and ${maxExclusive} (exclusive)</message>
    </field-validator>
</field>