[英]Getting Param Name in error when using @Validated on @RequestParam in Spring Boot Rest API
我正在开发REST API,并想使用Spring的@Validated
注释来验证一些@RequestParam
。
但是问题是@Validated
导致ConstraintViolationException
由于该原因我无法获取FieldError的详细信息,因此我可以检查哪个Field有错误并根据请求的参数提供适当的错误对象。
这是我用于处理此验证的示例代码:
控制器类
@RestController
@Validated
public class Controller{
@GetMapping("/getValue")
public Response controller(@RequestParam @NotNull String username,
@RequestParam String value, @RequestParam @NotNull @Size(max=21) String id, @RequestParam @Pattern(regexp="")String value){
return responseObject;
}
ValidationHandlerClass
@ControllerAdvice
public class ControllerValidation{
@ExpectionHandler
@ResponseBody
@ResponseStatus(HttpStatus.BAD_REQUEST)
public Set<ConstraintViolation> validateRequest(ConstraintViolationException e){
return e.getConstraintViolations();
}
谁能帮助我在这种验证情况下如何获取FieldErrors。
提前致谢。
谢谢您的帮助。 我得到了我的回答,我将以下添加为配置:
@Configuration
public class ConfigProps{
@Bean
public Validator validator(){
return new LocalValidatorFactoryBean();
}
@Bean
public MethodValidationPostProcesssor methodValidationPostProcessor(){
MethodVaidationPostProccessor methodPostProcessor = new MethodValidationProcessor();
methodPostProcessor.setValidator(validator());
return methodPostProcessor;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.