2016-02-29 15 views
5

をオフにする私は、コントローラのメソッド春休憩コントローラー:どのように選択的に私のコントローラで検証

update(@Valid @RequestBody RequestDTO requestDTO) 
を追加したいエンティティ

import org.hibernate.validator.constraints.NotEmpty; 
... 
public class RequestDTO 
    @NotEmpty // (1) 
    private String field1; 
    //other fields, getters and setters. 

import javax.validation.Valid; 
... 
@RestController 
public class Controller { 

    @RequestMapping(method = RequestMethod.POST) 
    public ResponseEntity<?> create(@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これらのグループ制約についての詳細を読むことができます。

関連する問題