Modelを作成するLogicはいいとして、それをAjaxRequestTargetにaddComponent()する時に困った。AjaxRequestTarget#addComponent()でListViewを渡すと以下のようなExceptionが発生する。
This component is a repeater and cannot be repainted via ajax directly. Instead add its parent or another markup container higher in the hierarchy.となる。AbstractRepeaterのインスタンスをaddComponent()するとAjaxRequestTarget#addComponent(Component component, String markupId)内で上記のIllegalArgumentExceptionが投げられるようになっている。
結局、ListViewをdiv wicket:id="ListViewContainer"みたいな要素の内側に配置して、ajaxRequestTarget#addComponent()にこのContainerを渡す、みたいな方法をとった。で、このContainerの実装として「org.apache.wicket.markup.html.border.BoxBorder」を使用した。
これでちゃんと動作しているから、困ってるという訳でも無いかもしれんけど、気分的には、こういう時に使うPanelとかBoxみたいなContainerとしてしか機能がないContainerを使いたい、あんまキレイじゃない、という気分。
それか、独自のListViewを使って解決するのがいいのか。Wicket使ってる他のみんなはこういぅ時(RepeaterをaddComponent()したいとき)にどーしてるんだろ?
0 件のコメント:
コメントを投稿