私はプロジェクトのための簡単なカスタムバリデーターを作成しようとしています。条件付きでバリデーションを行う継ぎ目を見つける方法を見つけることができません。SEAMの別のフィールドの値に応じて、必要に応じてフィールドを検証できますか?
は、ここで私が持っているものです:私は必要なもの
@RequiredIfSelected
public class AdSiteHelper {
private Date start;
private Date end;
private boolean selected;
/* getters and setters implied */
}
(つまり実体ではありません)
Beanをバックアップヘルパー/「開始」と「終了」場合に必要とされるのです選択された場合にのみ真となります。
TYPEターゲットでカスタムバリデーターを作成しようとしましたが、seamはそれを取り上げて検証したくないようです。ここで初心者のための私のカスタム注釈の一般的な考えです
(それは実体ではないので、たぶん?):
@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) { }
}