[cubby-user:125] Re: バリデーションについて

BABA,Yasuyuki [E-MAIL ADDRESS DELETED]
2009年 3月 29日 (日) 05:26:07 JST


馬場です。

RequiredValidator などの Cubby が用意しているバリデータを条件つきで呼び
出したいということですか?
それであれば、以下のようなコードで可能です。

add(new ValidationRule() {
	public void apply(Map<String, Object[]> params, Object form,
			ActionErrors errors) throws ValidationException {

		RegisterDto registerDto = (RegisterDto) form;
		String type = registerDto.getType();
		ValidationContext validationContext = new ValidationContext();
		if ("A".equals(type)) {
			new RequiredValidator().validate(validationContext,
registerDto.getName());
			if (!validationContext.getMessageInfos().isEmpty()) {
				throw new ValidationException(new Redirect("/errorpage"));
			}
		}
	}
});

RegisterDto の type が "A" のときだけ name を RequiredValidator でチェッ
ク、エラーなら "/errorpage" にリダイレクトする、というコード例です。
(typo などあったらごめんなさい)

ただ、相関チェックの目的であれば Cubby のバリデータよりも自前のコードで
チェックするほうがわかりやすいかとも思います。

if ("A".equals(type)) {
	String name = registerDto.getName();
	if (name == null || name.length == 0) {
		throw new ValidationException(new Redirect("/errorpage"));
	}
}


Hiroshi Yamamoto さんは書きました:
> お世話になっております。
> 山元と申します。
> 
> CubbyのActionメソッド内や、ValidationRuleの実装内などで
> 手動でバリデーションを呼び出すことは可能でしょうか。
> 
> 条件付きのバリデーションや、エラーによって遷移先を動的に変更したい場合の
> 処理を意図しています。
> 
> 以上、よろしくお願いいたします。
> _______________________________________________
> cubby-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/cubby-user


-- 
BABA,Yasuyuki
[E-MAIL ADDRESS DELETED]


cubby-user メーリングリストの案内