[Seasar-user:15940] Re: [Teeda] forEachによる繰り返しをJavascriptで追加・削除した場合

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 10月 7日 (火) 21:00:29 JST


小林 (koichik) です.

Date:    Tue, 07 Oct 2008 20:29:28 +0900
From:    Tonomura-Akira <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:15938] Re: [Teeda] forEachによる繰り返しをJavascriptで追加・削除した場合

> Javascriptで、2行目を削除して、name属性を整理してsubmitすると
> form:xxxItems:0:aaa=xxx
> form:xxxItems:1:aaa=zzz
> のデータがrequestに送られるのですが、
> Pageクラスでは、HTML上で消した3番目の要素も
> xxxItemsに入ってきてしまうということです。

それは仕様ということになります (たぶん).
xxxItems に入ってくるのではなく,保存しておいた
値が残っているだけですが.

現状では,xxxItems のサイズを小さくすることは
やっていません.
行がないのか行の中の値がないだけなのか
判断できないためだと思われます.

<input type="hidden"> で行数を保持し,
スクリプトで書き換え可能にすることも検討
したのですが,互換性の問題があって実現
できませんでした.

http://ml.seasar.org/archives/seasar-user/2007-November/011628.html
http://ml.seasar.org/archives/seasar-user/2007-November/011648.html
http://ml.seasar.org/archives/seasar-user/2007-November/011649.html

行そのものを削除するのではなく,hidden を
使って削除したというマークを付ける方が
いいかもしれません.

> > それなら xxxitemsSave を使わないのが無難かも.
> > 毎回 List or 配列が新規作成されるので.
> 
> 使わなければ、javascriptの削除も正常に反映されるのですが、
> その場合、validatorでエラーになったときに
> xxxItemsが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 メーリングリストの案内