2012-05-21 3 views
0

Je cherchais un moyen de valider un bean pour seulement certaines propriétés au lieu de toutes les propriétés.validation de bean personnalisé en Java

Ex:

public Class TestA { 

@NotEmpty 
private String first; 

@NotEmpty 
@Size(min=3,max=80) 
private String second; 

//getters and setters 

} 

j'ai une autre classe appelée 'TestB' qui est referreing à de la TestA 'classe comme ci-dessous

public Class TestB { 

@NotEmpty 
private String other; 

@Valid 
private TestA testA; 

//public getters and setters 
} 

est-il possible d'écrire une annotation personnalisée validateur pour valider seulement certaines propriétés? quelque chose comme ci-dessous ...

public Class TestB { 

@NotEmpty 
private String other; 

@CustomValid(properties={"second"}) 
private TestA testA; 

//public getters and setters 
} 
+0

Utiliser l'héritage (interface et superclasse) –

Répondre

1

Utilisez l'attribut groups pour cela. Il va ressemble à ceci:

public Class TestA { 

@NotEmpty(groups = {Second.class}) 
private String first; 

@NotEmpty(groups = {Second.class}) 
@Size(min=3,max=80, groups = {Second.class}) 
private String second; 

//getters and setters 

} 

et

public Class TestB { 

@NotEmpty 
private String other; 

@Valid 
private TestA testA; 

//public getters and setters 
} 

Second est une interface vide qui a défini quelque part. Pour plus de détails, voir les exemples dans la documentation: 2.3. Validating groups De même, si vous utilisez Spring> = 3.1, vous pouvez être intéressant dans l'annotation @Validates qui permet d'activer la validation des groupes spécifiés.