[Wicket-ja-user 575] Re: DataViewをAjaxで更新したい

Back to archive index

竹内 秀行 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




Wicket-ja-user メーリングリストの案内
Back to archive index