我正在使用@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
答案 0 :(得分:2)
@Pattern(regexp = "...", message = "Invalid IP Address! ${validatedValue}")
我对Spring解析默认验证消息中SpEL表达式的能力感到怀疑。
在进行调试时,我设法发现评估上下文知道许多属性,包括regexp
,payload
,flags
,groups
,{{1 }}和validatedValue
(专门用于message
)。
您可以通过用@Pattern
括起名称来将其中的任何一个包括在@Pattern#message
中。
由于Spring使用Hibernate Validator作为JSR-303 / JSR-349的默认参考实现,因此值得阅读Hibernate文档:Chapter 4. Interpolating constraint error messages。