[Seasar-user:13430] [teeda] 可変長データ(*Items)をSubapplicationScope に登録すると動的な行追加ができなくなってしまう件。

Yohji Nihonyanagi [E-MAIL ADDRESS DELETED]
2008年 3月 27日 (木) 03:00:21 JST


yohjizzz と申します。

表題の通りなのですが、
Pageクラスにて可変長データ(public List<HogeDto> hogeItems)を保持、
HTMLにて(JavaScriptにより)動的に行(テキストボックスやプルダウンを含む)を追加、
可変長データとしてフォーム送信を行う。

上記のケースは「通常」期待する動作が確認できます。
#たとえばレンダリング時は3行、
#JavaScriptで2行追加(id属性やname属性はTeeda仕様に従い追加します)すればフォームが送信されると
#Pageクラスには5行のDTOがバインドされます。

しかし「hogeItems」に対して SubapplicationScopeを指定すると、
レンダリング時の行数に対して、JavaScriptで行を追加してもフォームを受信したPageクラスにおいて、
doXxx実行時、hogeItemsは3行のみしかバインドされておりません。
4〜5行目のパラメータが送信されていることは確認済みです。

またとりあえずの回避方法として、
入力(行を追加する)画面にて hogeItems はデフォルトスコープとして、
確認画面(入力画面後に遷移する画面)のPageクラスにて、
SubapplicationScopeに指定する、という安易な方法を試したのですが、

1.入力画面
2.確認画面(SubapplicationScopeへセット)
3.入力画面へ戻る
4.再度行追加を行い、フォーム送信

上記の手順を実施すると、
上述と同じ状態(動的に追加した行のみバインドされない)となります。
(確認画面でSubapplicationScopeの指定を外せば回避できます。)

仕様上、今回のケースではSubapplicationScopeへの登録を行いたいのですが、
SubapplicationScopeに登録してしまった可変長データ(*Items)は、
JavaScriptなどによるクライアントでの動的な行追加(削除も?)は不可能なものなのでしょうか?


-- 
http://d.hatena.ne.jp/yohjizzz/
mailto:yohjizzz_at_gmail.com


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