Comment valider un argument de méthode avec @Validé annotation basée sur le groupe
J'ai une entité XYZ.java
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class XYZ extends BaseEntity implements Serializable {
@NotNull (groups = {Groups.Insert.class, Groups.Delete.class, Groups.Update.class, Groups.Select.class})
private String X;
et il y a une interface XYZCRUD.java
à faire des opérations CRUD sur XYZ.java
@Validated
public interface XYZCRUD {
public int insert(@Valid XYZ entity) throws SomeException;
Bien que javax @Valide qui fonctionne pour @NotNull de validation, mais il ne prend pas en charge la transmission de la validation de l'annotation de l'attribut de la méthode de là où je suis le déclenchement de la validation .
J'ai donc essayé d'utiliser @Validé annotation qui ne permet pas le passage de groupes via un attribut "value" comme ce
@Validated
public interface XYZCRUD {
public int insert(@Validated(value=SomeGroup.class) XYZ entity) throws SomeException;
Cependant, il ne déclenche pas la validation.J'ai essayé après avoir retiré les groupes d'attribut sur le terrain et aussi de la gâchette d'annotation.
Conclusion : @Validé ne déclenche pas @NotNull
Questions :
- Pourquoi @Validé ne déclenche pas la javax @NotNull ? Suis-je en train de faire quelque chose
incorrect ou n'est-il pas le soutenir? - Est-il une autre manière? ne peut pas mettre en œuvre de validation personnalisée
REMARQUE : je suis aussi à l'aide de lombok si elle a quelque chose à voir avec cela.
OriginalL'auteur mayank vats | 2015-08-05
Vous devez vous connecter pour publier un commentaire.
Il semble que @Validés était en train de faire son travail qui est le seul à marquer "paramètres" avec des groupes mais comment est interprété ("intercepté") par le framework de validation est une autre histoire .
Dans mon cas, c'est ce qui se passait quand au niveau de la méthode de validation ont été intercerpted et validé
À partir de la documentation du Printemps MethodValidationInterceptor
Ce qui signifie que le SEULEMENT groupes mentionnés au niveau de la classe sera validée et ils seront utilisés pour la toutes les méthodes publiques.
Je ne comprends pas la raison de cette mise en œuvre, mais c'est ce que les docs disent .Si quelqu'un connaît la raison s'il vous plaît commentaire.
OriginalL'auteur mayank vats
@mayank-cuves Si vous souhaitez appliquer un groupe spécifique de la méthode (pas toutes les méthodes publiques), vous pouvez utiliser:
OriginalL'auteur rubensa
Pour @NotNull, vous aurez besoin d'ajouter le defgault groupe:
OriginalL'auteur Nerdfest