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