2016-02-29 14 views
5

Nel mio controller Ho un metodo per la creazione di un'entitàcontroller Riposo Primavera: come passare selettivamente fuori convalida

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

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

con

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

voglio aggiungere un metodo di controllo

update(@Valid @RequestBody RequestDTO requestDTO) 

ma in questo metodo dovrebbe essere consentito per field1 essere vuoto o nullo, ovvero la riga

@NotEmpty // (1) 

dello RequestDTO deve essere ignorato.

Come posso fare questo? Devo scrivere una classe che sembra esattamente la stessa di RequestDTO, ma non ha l'annotazione? O è in qualche modo possibile per via ereditaria?

risposta

8

Risposta breve: utilizzare convalida Gruppi:

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

e riferimento il vostro gruppo destinato a Parametri metodo handler:

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

Nell'esempio di cui sopra, saranno applicate le convalide del gruppo SomeCriteria e altri saranno ignorati. Di solito, questi gruppi di validazione sono definiti come interfacce vuote:

public interface SomeCriteria {} 

Si può leggere di più su questi vincoli di gruppo in Hibernate Validator documentation.

Problemi correlati