2016-02-29 132 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組約束。