Spring Rest Controller:如何有选择地关闭验证

在我的控制器中,我有一种创建实体的方法

import javax.validation.Valid;

...

@RestController

public class Controller {

@RequestMapping(method = RequestMethod.POST)

public ResponseEntity<?> create(@Valid @RequestBody RequestDTO requestDTO) {

...

import org.hibernate.validator.constraints.NotEmpty;

...

public class RequestDTO

@NotEmpty // (1)

private String field1;

//other fields, getters and setters.

我想添加一个控制器方法

update(@Valid @RequestBody RequestDTO requestDTO)

但在此方法中,应允许为field1空或为null,即该行

@NotEmpty // (1)

RequestDTO应该被忽略。

我怎样才能做到这一点?我是否必须编写一个看起来与完全相同的类RequestDTO,但是没有注释?还是通过继承某种方式可行?

回答:

简短答案:使用 验证组

@NotEmpty(groups = SomeCriteria.class)

private String field1;

并在方法处理程序参数中引用您想要的组:

public ResponseEntity<?> create(@Validated(SomeCriteria.class) @RequestBody RequestDTO requestDTO)

在上面的示例中,SomeCriteria将应用组中的验证,而其他验证将被忽略。通常,这些验证组被定义为空接口:

public interface SomeCriteria {}

您可以在Hibernate

Validator文档中阅读有关这些组约束的更多信息。

以上是 Spring Rest Controller:如何有选择地关闭验证 的全部内容, 来源链接: utcz.com/qa/415104.html

回到顶部