竹内 秀行
webma****@chime*****
2011年 9月 11日 (日) 12:02:37 JST
たけうちです。 ListViewおよびDataViewに対応するHTML上のタグが無いからです。 WicketのAjaxによる更新は、addComponent()したコンポーネントの HTMLのタグを丸ごと新しいものに置き換えるということをJavascript側で 行っています。そのため、生成されたHTMLでタグが存在しないものに対しては 更新がかけられません。たとえば、setRenderBodyOnly(true)とすると そのコンポーネントがAjax更新できないのはそのためです。 ListViewで指定するwicket:idは、列挙されるListItemに対応してしまうため ListViewそのものに対応するタグがなくなります。 -- たけうち @chimerast On 2011/09/11, at 0:19, maga****@hagan***** wrote: > 船田です。 > > AbstractRepeaterを継承したListViewやDataViewなどをAjaxで更新したい場合に > > AjaxRequestTargetでaddCommponentで追加した場合に > > java.lang.IllegalArgumentException: Component xxxx has been added to the target. This component is a repeater and cannot be repainted via ajax directly. Instead add its parent or another markup container higher in the hierarchy. > > となります。 > > WebMarkupContainerなどでAbstractRepeaterを内包するようにしてWebMarkupContainer > を更新すれば > 回避できるのですが、意図が見えず、しっくりときません。 > > PageクラスがAjaxで更新できないのはわかるのですが > AbstractRepeaterを直接Ajaxで更新不可としているは > なぜでしょうか? > > ご教授いただけると幸いです。 > > _______________________________________________ > Wicket-ja-user mailing list > Wicke****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user