2015-01-16 11 views
13

sto convalidando i miei POJO in un endpoint di risorse REST a Jersey:automaticamente cascata fagioli-validazione in modo ricorsivo, l'annotazione @Valid

public class Resource { 
    @POST 
    public Response post(@NotNull @Valid final POJO pojo) { 
     ... 
    } 
} 

public class POJO { 
    @NotNull 
    protected final String name; 

    @NotNull 
    @Valid 
    protected final POJOInner inner; 

    ... 
} 

public class POJOInner { 
    @Min(0) 
    protected final int limit; 

    ... 
} 

Questo sembra funzionare bene.

Tuttavia, l'annotazione @Min(0) viene verificata solo se il campo inner ha l'annotazione . Non sembra giusto aggiungere l'annotazione @Valid a ciascun campo che non è una primitiva.

C'è un modo per dire al validatore di bean di continuare automaticamente in modo ricorsivo la validazione, anche quando non è presente alcuna annotazione ? Vorrei che la mia POJO di essere come segue:

public class POJO { 
    @NotNull 
    protected final String name; 

    @NotNull 
    protected final POJOInner inner; 

    ... 
} 
+0

Cosa fagioli runtime convalida stai usando? –

+0

Sto usando il validatore di ibernazione. –

risposta

11

In realtà, secondo la specifica, aggiungendo @Valid è proprio per questo caso d'uso. Dalla specifica JSR 303:

Oltre a supportare la convalida dell'istanza, è supportata anche la convalida dei grafici dell'oggetto. Il risultato di una convalida del grafico viene restituito come un insieme unificato di violazioni dei vincoli. Si consideri la situazione in cui il bean X contiene un campo di tipo Y. Annotando il campo Y con l'annotazione @Valid, il Validator convaliderà Y (e le sue proprietà) quando X è convalidato.

...

L'annotazione @Valid viene applicato ricorsivamente

+0

Spring non lo fa per impostazione predefinita. Sto usando l'avvio a molla 2.0.0.BUILD-SNAPSHOT –

+2

Anche se questo potrebbe essere vero, non spiega se è possibile ottenere la convalida ricorsiva senza dover annotare tutti i membri, che è che OP sta chiedendo .. – cen

Problemi correlati