J'essaye de créer un simple validateur personnalisé pour mon projet, et je n'arrive pas à trouver un moyen d'obtenir une couture pour valider les choses conditionnellement.Comment puis-je valider un champ en fonction de la valeur d'un autre champ dans SEAM?
Voici ce que j'ai:
Un grain d'aide/support (ce n'est pas une entité)
@RequiredIfSelected
public class AdSiteHelper {
private Date start;
private Date end;
private boolean selected;
/* getters and setters implied */
}
Ce que j'ai besoin est pour « commencer » et « fin » être nécessaire si et seulement si sélectionné est vrai.
J'ai essayé de créer un validateur personnalisé à la cible TYPE, mais la couture ne semble pas vouloir le ramasser et le valider. (Peut-être parce que ce n'est pas une entité?)
est ici l'idée générale de mon annotation personnalisée pour commencer:
@ValidatorClass(RequiredIfSelectedValidator.class)
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiredIfSelected {
String message();
}
public class RequiredIfSelectedValidator implements Validator<RequiredIfSelected>, Serializable {
public boolean isValid(Object value) {
AdSiteHelper ash = (AdSiteHelper) value;
return !ash.isSelected() || (ash.getStart() && ash.getEnd());
}
public void initialize(RequiredIfSelected parameters) { }
}