使用@Pattern 时如何获取经过验证的输入的值?
How to get the value of the validated input when using @Pattern?
我正在使用 @Pattern
验证输入是否匹配 IP 地址:
@Pattern(regexp = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$",message = "Invalid IP Address! {validation.value}")
有没有办法告诉 spring 获取消息中的实际值?
现在我得到:
javax.validation.ConstraintViolationException: controllerMethod.ip: Invalid IP Address! {validation.value}
但是我想要
javax.validation.ConstraintViolationException: controllerMethod.ip: Invalid IP Address! BlaBlaBla
@Pattern(regexp = "...", message = "Invalid IP Address! ${validatedValue}")
我曾怀疑 Spring 在默认验证消息中解析 SpEL 表达式的能力。
调试时,我设法发现评估上下文知道很多属性,包括 regexp
、payload
、flags
、groups
、validatedValue
,和 message
(专门针对 @Pattern
)。
您可以将任何这些名称包含在 @Pattern#message
中,方法是用 ${...}
包围名称。
由于 Spring 使用 Hibernate Validator 作为 JSR-303/JSR-349 的默认参考实现,因此值得阅读 Hibernate 文档:Chapter 4. Interpolating constraint error messages.
我正在使用 @Pattern
验证输入是否匹配 IP 地址:
@Pattern(regexp = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$",message = "Invalid IP Address! {validation.value}")
有没有办法告诉 spring 获取消息中的实际值?
现在我得到:
javax.validation.ConstraintViolationException: controllerMethod.ip: Invalid IP Address! {validation.value}
但是我想要
javax.validation.ConstraintViolationException: controllerMethod.ip: Invalid IP Address! BlaBlaBla
@Pattern(regexp = "...", message = "Invalid IP Address! ${validatedValue}")
我曾怀疑 Spring 在默认验证消息中解析 SpEL 表达式的能力。
调试时,我设法发现评估上下文知道很多属性,包括 regexp
、payload
、flags
、groups
、validatedValue
,和 message
(专门针对 @Pattern
)。
您可以将任何这些名称包含在 @Pattern#message
中,方法是用 ${...}
包围名称。
由于 Spring 使用 Hibernate Validator 作为 JSR-303/JSR-349 的默认参考实现,因此值得阅读 Hibernate 文档:Chapter 4. Interpolating constraint error messages.