[Seasar-user:15619] Re: 【Teeda】itemsSave項目のjavascriptによる追加、削除

tanaka [E-MAIL ADDRESS DELETED]
2008年 9月 2日 (火) 17:50:01 JST


たなかです。

小林さんありがとうございます。

>もし途中に行を追加したり,途中の行を削除したり
>することがある場合は,itemsSave を持っていても
>役に立たないので,itemsSave は使わず,Dto の
>プロパティは全て (hidden などを使って) <input>
>等で画面に持つ必要があります.

hiddenで持っていませんでした。
最新版のjarに入れ替え、
hiddenで持つようにしたらitemsには
追加、削除した項目も正しく反映される事が確認できました。

つまらないミスに気づかず
お手数かけてしまい申し訳ありませんでした。


2008/09/02 16:00 Koichi Kobayashi <[E-MAIL ADDRESS DELETED]>:
> 小林 (koichik) です.
>
> Date:    Tue, 2 Sep 2008 11:00:12 +0900
> From:    tanaka <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:15601] 【Teeda】itemsSave項目のjavascriptによる追加、削除
>
>> [Seasar-user:11625]と同内容になると思いますが、
>> itemsSave項目をjavascriptで追加、削除した場合
>> POSTされた値のitemsSaveの内容が更新されず困っています。
>
> itemsSave 自体は Java オブジェクトをシリアライズ
> したものなので,JavaScript 側で更新できないと
> 思いますが.
>
> xxxItems による繰り返し項目の追加・削除の
> ことだと思いますが,それに合わせて itemsSave の
> サイズを変更することは現在では対応済みです.
>
>> [Seasar-user:11625]ではrequestから直接値を取得する事で
>> ご対応されているようですが、
>
> 違いますよ.
>
> [Seasar-user:11628]
>> > nameを他の行のnameと同じように、
>> > 「Form:aaaItems:1:aaaName」形式で設定すると取得することができました。
>                                     ^^^^
> というのは,例えば最初に 3 行表示されていたとして,
>
> <tr><td><input name="form:xxxItems:0:aaa" /></td></tr>
> <tr><td><input name="form:xxxItems:1:aaa" /></td></tr>
> <tr><td><input name="form:xxxItems:2:aaa" /></td></tr>
>
> 1 行追加した場合は
>
> <tr><td><input name="form:xxxItems:0:aaa" /></td></tr>
> <tr><td><input name="form:xxxItems:1:aaa" /></td></tr>
> <tr><td><input name="form:xxxItems:2:aaa" /></td></tr>
> <tr><td><input name="form:xxxItems:3:aaa" /></td></tr>
>
> となるように JavaScript で name 属性を
> 「設定」したということです.
>
> また,1 行削除した場合は
>
> <tr><td><input name="form:xxxItems:0:aaa" /></td></tr>
> <tr><td><input name="form:xxxItems:1:aaa" /></td></tr>
>
> となる必要があります.
> 削除したのが 1 行目であっても 2 行目であっても,
> 常に 0 から始まる順序でなくてはなりません.
> # 配列の添え字のようなもの.
>
> もし途中に行を追加したり,途中の行を削除したり
> することがある場合は,itemsSave を持っていても
> 役に立たないので,itemsSave は使わず,Dto の
> プロパティは全て (hidden などを使って) <input>
> 等で画面に持つ必要があります.
>
>> これらの項目に対して
>> teedaのvalidationをかけたい場合はどうしたら良いのでしょうか?
>
> 上記のようにすればバリデーションは行われます.
> itemsSave はページクラスのプロパティを保持する
> ためのものですが,バリデーションはページクラスに
> 対してではなく,UIComponent に対して行われます.
>
>
> --
> <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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


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