Java 验证:无法在验证消息中插入字段名称
Java validation: Cannot interpolate field name in validation message
我尝试了 中提到的方法,但无法将其应用于以下情况。
@Data
public class CompanyRequest {
@PositiveOrZero(message = "validation.amount.positiveOrZero")
int quantity;
// code omitted for brevity
}
这是我的 *.properties
文件,其中包含消息:
validation.amount.positiveOrZero=The ${fieldName} value must be positive or zero
那么,如何在验证消息中使用 属性 名称?
${fieldName}
如果不对进行评估的核心机制进行重大修改,则无法在注释中轻松检索。
考虑到每个字段的名称都不同,实现您想要的更简单的方法如下。
在属性文件中放入 属性
validation.amount.positiveOrZero= value must be positive or zero
然后在代码中定义注解为
@PositiveOrZero(message = "The quantity {validation.amount.positiveOrZero}")
int quantity;
编辑:
属性 似乎不应该在一个简单的 application.properties 文件中定义,而应该在类路径中另一个名为 ValidationMessages.properties
的文件中定义。
如文档所述here
setValidationMessageSource(MessageSource messageSource) Specify a
custom Spring MessageSource for resolving validation messages, instead
of relying on JSR-303's default "ValidationMessages.properties" bundle
in the classpath.
我尝试了
@Data
public class CompanyRequest {
@PositiveOrZero(message = "validation.amount.positiveOrZero")
int quantity;
// code omitted for brevity
}
这是我的 *.properties
文件,其中包含消息:
validation.amount.positiveOrZero=The ${fieldName} value must be positive or zero
那么,如何在验证消息中使用 属性 名称?
${fieldName}
如果不对进行评估的核心机制进行重大修改,则无法在注释中轻松检索。
考虑到每个字段的名称都不同,实现您想要的更简单的方法如下。
在属性文件中放入 属性
validation.amount.positiveOrZero= value must be positive or zero
然后在代码中定义注解为
@PositiveOrZero(message = "The quantity {validation.amount.positiveOrZero}")
int quantity;
编辑:
属性 似乎不应该在一个简单的 application.properties 文件中定义,而应该在类路径中另一个名为 ValidationMessages.properties
的文件中定义。
如文档所述here
setValidationMessageSource(MessageSource messageSource) Specify a custom Spring MessageSource for resolving validation messages, instead of relying on JSR-303's default "ValidationMessages.properties" bundle in the classpath.