Java Struts2:如何停用FieldValidator的默认消息
Java Struts2:如何停用FieldValidator的默认消息,java,struts2,validation,Java,Struts2,Validation,我正在使用Struts2处理JAVA EE项目,我有一个jsp文件,其中包含字段名称和年龄: <s:form action="login" method="post"> <s:textfield name="name" label="Name" size="20" /> <s:textfield name="age" label="Age" size="20" /> <s:submit label="Submit" a
我正在使用Struts2处理JAVA EE项目,我有一个jsp文件,其中包含字段名称和年龄:
<s:form action="login" method="post">
<s:textfield name="name" label="Name" size="20" />
<s:textfield name="age" label="Age" size="20" />
<s:submit label="Submit" align="center" />
</s:form>
一切正常,但当我输入无效年龄(例如“test”字符串)时,我会看到消息,我在注释中设置的“请输入有效年龄”和另一个默认值“年龄”字段的无效字段值“,因此我的问题是如何在第二条消息中取消激活它
编辑:这张图片显示了我收到的信息
谢谢。首先阅读
然后阅读官方文件(粗体是我的):
类型转换错误处理提供了一种简单的方法来区分
在输入验证问题和输入类型转换之间
问题
在类型转换过程中发生的任何错误都可能被忽略,也可能不希望被忽略
报道。例如,报告无法输入“abc”
转换成一个数字可能很重要。另一方面,报告
无法将空字符串“”转换为数字可能不正确
重要信息-尤其是在很难控制的web环境中
区分用户未输入值与输入空白
价值观
默认情况下,使用通用i18n报告所有转换错误
键xwork.default.invalid.fieldvalue
,您可以覆盖它(
默认文本是字段“xxx”的无效字段值,其中xxx是
在您的全局i18n资源包中的字段名。
但是,有时您可能希望在服务器上覆盖此消息
按场计算。您可以通过添加一个与
只需使用该模式执行您的操作(action.properties)
无效的.fieldvalue.xxx
,其中xxx
是字段名
重要的是要知道这些错误实际上都不是错误
直接报道。相反,它们被添加到一个名为
ActionContext中的conversionErrors。这张地图有几种方法
然后可以访问,并相应地报告错误
错误报告有两种方式:
- 在全球范围内,使用
- 在每个字段的基础上,使用
ConversionErrorFieldValidator
,因此您同时使用了两种机制,而您应该只使用其中一种机制
您可以使用以下三种方法之一:
全球资源方式
- 删除您的
李>ConversionErrorFieldValidator
- 创建一个全局i18n资源包并添加密钥
xwork.default.invalid.fieldvalue = Please enter a valid "{0}"
- 删除您的
李>ConversionErrorFieldValidator
- 创建一个action resource bundle(针对具有此需求的每个action/field)并添加
- 对于需要执行的所有操作,请从堆栈中删除ConversionError拦截器
abc
插入int
字段,将在页面中重新填充abc
)
使用上一个解决方案,您的消息将被短接,但您必须手动处理字段的重新填充,并且您需要记住对每个字段使用自定义的@ConversionErrorFieldValidator
,因为除非转换错误消息被吞没
就个人而言,我会选择解决方案1。这是最安全的,而且基本上不需要工作。事实上,这是法语:)Très bien,et merci pour les vots:)
xwork.default.invalid.fieldvalue = Please enter a valid "{0}"
invalid.fieldvalue.age = Please enter a valid age