[Seasar-user:19947] Re: 【Teeda】繰り返しの際の動作に関してNo.2

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2010年 7月 5日 (月) 06:00:00 JST


小林 (koichik) です.

Date:    Sun, 04 Jul 2010 21:17:05 +0900
From:    鈴木 順 <[E-MAIL ADDRESS DELETED]>
To:      seaser-ml <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:19946] 【Teeda】繰り返しの際の動作に関してNo.2

> 繰り返しの中にINPUTタグを置き、
> 必須のON/OFFをダイナミックプロパティ
> で実現しようと考えております。
> 
> Exampleで再現できるもの添付いたします。
> Javaファイルはexamples.teeda.web.hogeにおいてください。
> 入力欄を空にした際に、エラーメッセージが出力されれ、
> サーバ側のDtoの値が書き換わらない予定でおります。

input 要素の required 属性は HTML5 で追加された
属性で,対応しているブラウザならクライアント
サイドでチェックされますが (Opera では未入力だと
サブミットできません),属性値がリクエスト
パラメータに含まれるわけではないので,サーバ側の
動作には関係ありません.

ページスコープに保存されたダイナミックプロパティの
値が UIInput の required プロパティに反映されるのを
期待しておられるのかもしれませんが,バリデーション時の
UIInput の状態は基本的にリクエストパラメータの値から
復元されるだけで,ダイナミックプロパティの値は
反映されません.

http://teeda.seasar.org/ja/extension/concept/lifecycle.html#JSFライフサイクルとの関係

必須項目かどうかを動的に制御する場合は
ダイナミックバリデータを使ってください.

http://teeda.seasar.org/ja/extension/reverse/validation.html#ダイナミックバリデータを使用するには

例えば

    public int inputDtoIndex;

    public Validator getInputValueValidator() {
        if (inputDtoItems[inputDtoIndex].getInputValueRequired()) {
            return new TRequiredValidator();
        }
        return null;
    }


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



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