Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring boot REST控制器:用于接收相同对象的POST和PUT方法的不同自定义验证器_Java_Spring_Spring Boot - Fatal编程技术网

Java Spring boot REST控制器:用于接收相同对象的POST和PUT方法的不同自定义验证器

Java Spring boot REST控制器:用于接收相同对象的POST和PUT方法的不同自定义验证器,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个带有POST和PUT方法的Spring引导控制器和一个自定义验证器 @Autowired PersonValidator validator; @InitBinder protected void initBinder(final WebDataBinder binder) { binder.addValidators(validator); } @PostMapping public ResponseEntity<String> save(@Valid @RequestB

我有一个带有POST和PUT方法的Spring引导控制器和一个自定义验证器

@Autowired
PersonValidator validator;

@InitBinder
protected void initBinder(final WebDataBinder binder) {
binder.addValidators(validator);
}
@PostMapping
public ResponseEntity<String> save(@Valid @RequestBody Person person) {}

@PutMapping
public ResponseEntity<String> update(@Valid @RequestBody Person person) {}
@Autowired
验证器验证器;
@InitBinder
受保护的初始绑定器(最终WebDataBinder绑定器){
binder.addvalidator(验证器);
}
@邮戳
公共响应属性保存(@Valid@RequestBody-Person){}
@PutMapping
公共响应属性更新(@Valid@RequestBody-Person){}

目前,POST和PUT方法都使用相同的验证规则问题:我需要为PUT和POST设置不同的验证规则。关于如何继续,如何在同一个RestController中使用不同的自定义验证器,有什么想法吗

您可以为每个验证器创建自己的注释,并在每个端点替换@Valid。
看看@InRange:

如果您使用的是Spring boot,那么您可以在应用程序中集成Hibernate验证程序。似乎需要实现分组约束()

e、 g

实体

@NotEmpty(groups = PutValidation.class)
private String field1;

@Size(min = 3, groups = PutValidation.class)
@Size(min = 5, groups = PostValidation.class)
private String field2;

@Min(value = 18, groups = {PostValidation.class,PutValidation.class,Default.class})
private int age;

//Getters/setters
组(这些只是空接口)

如何在控制器中使用约束组

@PostMapping
public ResponseEntity<String> save(@Validated(PostValidation.class) @RequestBody  Person person) {}

@PutMapping
public ResponseEntity<String> update(@Validated(PutValidation.class) @RequestBody Person person) {}
@PostMapping
公共响应属性保存(@validation(PostValidation.class)@RequestBody-Person){}
@PutMapping
公共响应属性更新(@Validated(PutValidation.class)@RequestBody-Person){}
我希望这能帮助你解决问题

干杯

使用jsonView可能会有所帮助
@PostMapping
public ResponseEntity<String> save(@Validated(PostValidation.class) @RequestBody  Person person) {}

@PutMapping
public ResponseEntity<String> update(@Validated(PutValidation.class) @RequestBody Person person) {}