我的一个struts 2形式中有一个字段“length”。 “长度”的数据类型是“双倍”。我在XML文件中应用了“双重”验证。但是当我在“长度”文本字段中键入字母时,它会将错误消息显示为
Invalid field value for field "length"
我不希望此消息显示如下。此消息由struts 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>