Spring Boot PathVariable验证消息

时间:2017-12-10 16:20:54

标签: java spring validation spring-boot

我想验证端点的PathVariable。实际上,它不是验证,因为它是由java本身完成的。例如,如果PathVariable类型是Integer并且我将String传递给它,它将抛出类似这样的内容:Failed to convert value of type [java.lang.String] to required type [java.lang.Long]... - 这就是响应消息。如何设置自定义消息(例如:年龄必须是数字)?我知道我可以创建一个自定义验证器并将其与注释一起使用但由于我有许多端点,我将不得不为每个PathVariable创建一个非常大量的验证器 - 看起来好像不行,因为我知道必须有一个更简单的方法。我错了吗?

1 个答案:

答案 0 :(得分:0)

您可以为引发的MethodArgumentTypeMismatchException创建处理程序:

@RestControllerAdvice
public class ExceptionControllerAdvice {
    @Inject
    private MessageSource messageSource;

    @ExceptionHandler(MethodArgumentTypeMismatchException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public String handleTypeMismatch(MethodArgumentTypeMismatchException e) {           
        // Return custom message from messageSource using e.getRequiredType()
    }
}