【问题标题】:Spring, How to set error message from custom constraint validator at runtimeSpring,如何在运行时从自定义约束验证器设置错误消息
【发布时间】:2022-10-14 16:42:09
【问题描述】:

我有这个约束来验证 dhcp 主机地址。

annotation class DHCPAddressConstraint(
  val message: String = "Invalid dhcp address.",
  val groups: Array<KClass<*>> = [],
  val payload: Array<KClass<out Payload>> = [],
  val cidrField: String = "",
  val addressRangeField: String = ""
)

class DHCPAddressValidator: ConstraintValidator<DHCPAd, Any> {
  override fun isValid(obj: Any, context: ConstraintValidatorContext): Boolean {
    val cidr = ReflectionUtils.get(obj, cidrField)
    val addressRange = ReflectionUtils.get(obj, addressRangeField)
    return isValidCIDR(cidr) && isValidAdressRange(cidr, addressRange)
  }
}

因此,如果某些内容无效,它将仅返回“无效的 dhcp 地址。”。我想将错误消息设置得更具体,为什么它无效。例如 dhcp 地址范围可能不在 CIDR 范围内或用户输入保留的 IP 地址等。我预计会有这样的错误消息“由于 ${reason} 而导致的 dhcp 地址无效”。如何在运行时设置约束错误消息?

【问题讨论】:

    标签: spring spring-boot kotlin


    【解决方案1】:

    你可以借助 @ControllerAdvice 和 @ExceptionHandler

    请看下面的示例代码

    
    @RestControllerAdvice
    public class ApiExceptionController {
    
        @ExceptionHandler(value = PageNotFoundApiException.class)
        public ResponseEntity<Object> pageNotFoundApiException(PageNotFoundApiException exception){
            return new ResponseEntity<>("Page Not Found 404", HttpStatus.NOT_FOUND);
        }
    }
    

    你也可以参考这个documentation

    我希望,它有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2011-11-27
      • 2018-01-29
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      相关资源
      最近更新 更多