[Seasar-user:7692] Re: [Teeda] Validatorでチェックする桁数を可変にしたい

Shinpei Ohtani [E-MAIL ADDRESS DELETED]
2007年 5月 18日 (金) 17:11:00 JST


大谷です。

あまりキレイでは無いですが、
下記のようにすればできます。

肝なところは、TeedaExtensionでは
定数またはTigerアノテーションで記述したValidatorは
内部的にEL式(#{コンポーネント名.プロパティ名})の形で
saveされています。

そのため、initialize()で直接Validatorを管理しているところに
addするようにしておいて、その前に動くLogicをかませば
動的にValidatorのプロパティを決定することが出来ます。


package examples.teeda.web.add;

import javax.faces.internal.ValidatorResource;

import org.seasar.framework.convention.NamingConvention;
import org.seasar.teeda.extension.validator.TRequiredValidator;

public class AddPage {

	// public static final String arg1_TGreaterThanConstantValidator = null;

	// public static final String arg2_TGreaterThanConstantValidator = null;

	private int arg1;

	private int arg2;

	private int result;

	private NamingConvention namingConvention;

	public String initialize() {
		String componentName = namingConvention
				.fromClassNameToComponentName(this.getClass().getName());
		ValidatorResource.addValidator("#{" + componentName + ".arg1}",
				new TRequiredValidator());
		ValidatorResource.addValidator("#{" + componentName + ".arg2}",
				new TRequiredValidator());
		return null;
	}

	public int getArg1() {
		return arg1;
	}

	public void setArg1(int arg1) {
		this.arg1 = arg1;
	}

	public int getArg2() {
		return arg2;
	}

	public void setArg2(int arg2) {
		this.arg2 = arg2;
	}

	public int getResult() {
		return result;
	}

	public void setResult(int result) {
		this.result = result;
	}

	public String doCalculate() {
		result = arg1 + arg2;
		return null;
	}

	public NamingConvention getNamingConvention() {
		return namingConvention;
	}

	public void setNamingConvention(NamingConvention namingConvention) {
		this.namingConvention = namingConvention;
	}

}

宜しくお願いします。


07/05/17 に 松崎 学<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 松崎です。いつもお世話になっております。
>
> TByteLengthValidatorやTNumberLengthValidatorでチェックする桁数を
> ロジックでセットする事は可能でしょうか?
> 入力可能桁数をDBのテーブル定義情報から取得してチェックしたいのです。
>
> アノテーションでソースにリテラル指定する事しか出来ないのでしょうか?
>
> 以上、よろしくお願い致します。
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


-- 
=============================
Shinpei Ohtani
[E-MAIL ADDRESS DELETED]
=============================



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