2016-02-29 91 views
5

在我的控制器我有一个方法来创建一个实体弹簧安置控制器:如何选择关掉验证

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为空或空,即行

@NotEmpty // (1) 

RequestDTO应该被忽略。

我该怎么做?我是否必须编写类似RequestDTO的课程,但没有注释?或者它通过继承以某种方式成为可能?

回答

8

简短的回答:使用确认团组

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

,并引用您的预期组中的方法处理参数:

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

在上面的例子中,SomeCriteria组验证将被应用其他人将被忽略。通常情况下,这些验证群体被定义为空的接口:

public interface SomeCriteria {} 

你可以阅读更多有关这些Hibernate Validator documentation组约束。