2013-03-06 15 views

risposta

11

@Required è un'annotazione personalizzata JSR-303, creata all'interno del framework Play. JSR-303 è una specifica per la convalida di Javabeans, che consente di garantire che i valori di un determinato bean Java rientrino in un insieme di vincoli . Esempi di alcune annotazioni di validazione standard:

  • @Max - L'elemento annotata deve essere un numero il cui valore deve essere inferiore o uguale alla massima specificata.
  • @Min - L'elemento annotato deve essere un numero il cui valore deve essere maggiore o uguale al minimo specificato.
  • @NotNull - L'elemento annotato non deve essere nullo.

Ogni annotazione JSR-303 è consentito di definire gruppi , dove ogni gruppo è in realtà solo una classe. Questi gruppi possono essere utilizzati per eseguire un sottoinsieme di convalide per un determinato bean. Nel tuo particolare esempio, gli implementatori hanno definito due interfacce per rappresentare questi gruppi: All e Step1. Quindi aggiungono i gruppi alle annotazioni di convalida, al fine di indicare che tali convalide appartengono al gruppo. Così, per la classe di seguito:

public class MyBean { 
    @Required(groups = {All.class, Step1.class}) 
    @MinLength(value = 4, groups = {All.class}) 
    public String username; 
} 

MyBean bean = new MyBean(); 
ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); 
Validator validator = factory.getValidator(); 

Di seguito eseguirà la convalida @Required e @MinLength per il username campo:

validator.validate(bean, All.class); 

considerando che la seguente eseguirà solo la convalida @Required (per il campo username):

validator.validate(bean, Step1.class); 
+0

Grazie, è stato molto utile. – vinos