繁体   English   中英

在Spring Boot Rest API中的@RequestParam上使用@Validated时,获取参数名称错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM