[Seasar-user:15614] Re: 【Teeda】itemsSave項目のjavascriptによる追加、削除
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2008年 9月 2日 (火) 16:00:18 JST
小林 (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 メーリングリストの案内