[Seasar-user:4157] Re: [S2JSF]比較する値を固定値としたS2GreaterEqualValidatorについて。

Shinpei Ohtani [E-MAIL ADDRESS DELETED]
2006年 7月 24日 (月) 12:30:42 JST


shotです。

下記のようなやり方はいかがでしょうか?
新しくValidtorを作ります。S2GreaterEqualValidatorは、targetで指定された
UIComponentから値をとりますが、以下のように値を直接取得するようにしておきます。
(valueの値のクラスは適宜変更してください)

public class S2ValueFixedGreaterEqualValidator extends S2GreaterEqualValidator {

    private Object value;

    public void validate(FacesContext context, UIComponent component,
            Object value) throws ValidatorException {
        if (value == null) {
            return;
        }
        Object targetValue = getValue();
        if (targetValue == null) {
            return;
        }
        if (!(value instanceof Comparable)
                || ((Comparable) value).compareTo(targetValue) < 0) {

            Object[] args = { UIComponentUtil.getLabel(component) };
            throw new ValidatorException(MessageUtil.getS2ErrorMessage(
                    GE_MESSAGE_ID, args));
        }
    }

    public Object getValue() {
        return value;
    }

    public void setValue(Object value) {
        this.value = value;
    }
}

そして、diconで好きな値をインジェクトしてやれば
Validationかかるはずです。

<component name="valueFixedGreaterEqualValidator"
class="org.seasar.jsf.validator.S2ValueFixedGreaterEqualValidator"
		instance="prototype">
 <property name="">new Integer(1)</property>
</component>

HTML上では、

    To:
    <input id="to" type="text"
    	m:label = "To">
	    <span m:inject="s:validator"
	    	m:binding="#{valueFixedGreaterEqualValidator}"/>
    </input>

のように指定します。
イメージだけで、ぜんぜん試してませんが
多分うまくいくのではないでしょうか?

よろしくお願いします。

06/07/24 に ITS Shinichiro Wakamiya<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 若宮@ITSです。
>
> org.seasar.jsf.validator.S2GreaterEqualValidator
> について、比較する値を固定値として使用することは、可能でしょうか。
>
> 一般的には、m:targetId に比較先のidを入れることが多いと思いますが、
> たとえば、1 以上の入力を行わせる場合、m:targetIdに固定値を記述できるのでしょ
> うか
>
> From:
> <input id="from" type="text" m:label = "From"></input>
>  - To:
> <input id="to" type="text" m:label = "To">
>   <span m:inject="s:validator"
>    m:binding="#{greaterEqualValidator}"
>    m:targetId="from"/>
> </input>
>
> 以上
> よろしくお願いいたします。
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://www.seasar.org/mailman/listinfo/seasar-user
>


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



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