2016-02-29 12 views
5

W moim kontroler mam metodę tworzenia podmiotuWiosna Reszta Kontroler: Jak selektywnie wyłączyć sprawdzanie

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

    @RequestMapping(method = RequestMethod.POST) 
    public ResponseEntity<?> create(@Valid @RequestBody RequestDTO requestDTO) { 
    ... 

z

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

chcę dodać metodę kontroler

update(@Valid @RequestBody RequestDTO requestDTO) 

ale w tej metodzie powinno być dozwolone, aby było puste lub zerowe, tzn. Linia

@NotEmpty // (1) 

z RequestDTO należy zignorować.

Jak mogę to zrobić? Czy muszę napisać klasę, która wygląda dokładnie tak samo, jak RequestDTO, ale nie ma adnotacji? Czy jest to w jakiś sposób możliwe dzięki dziedziczeniu?

Odpowiedz

8

Krótka odpowiedź: Stosować Grupy Validation:

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

i odniesienie do zamierzonego grupę w metodzie parametrów Handler:

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

w powyższym przykładzie, walidacje w grupie SomeCriteria będą stosowane a inni zostaną zignorowani. Zazwyczaj te grupy walidacji są zdefiniowane jako pustych interfejsów:

public interface SomeCriteria {} 

można przeczytać więcej na temat tych ograniczeń grupowych w Hibernate Validator documentation.

Powiązane problemy