代码之家  ›  专栏  ›  技术社区  ›  Adelin

当使用@Pattern时,如何获得已验证输入的值?

  •  2
  • Adelin  · 技术社区  · 6 年前

    @Pattern

    @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 
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Andrew    6 年前
    @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 .

    推荐文章