Daisuke Miyamoto
dai.0****@gmail*****
2012年 3月 15日 (木) 09:00:42 JST
都元です。 お困りの例外に対応できるかどうか確認しておりませんが、TransparentWebMarkupContainerを利用してみるのは いかがでしょうか。 通常、bodyタグにwicket:idを振り、それをWebMarkupContainerとした場合は、提示されたように、 本来WebPageに対してaddすべきコンポーネントはbodyにaddしていくことになると思います。 このWebMarkupContainerをTransparentWebMarkupContainerにした場合は、あたかもbodyには何の細工も しなかったかのように、普通にWebPageに対して、body下のコンポーネントをaddできるようになります。 この場合、WebPage#addのオーバーライドは必要なくなると思いますので、トラブル解決の一助になるかもしれません。 -- dai.0****@gmail***** http://jiemamy.org/ http://d.hatena.ne.jp/daisuke-m/ http://twitter.com/daisuke_m/ 2012年3月14日16:56 曽我 裕士 <soga****@y-net*****>: > 曽我と申します。 > > 現在、wicket1.5.2で開発しております。 > > htmlのbodyタグのid属性をサーバー側で動的に変更させたくて > > 共通WebPageクラス内で以下のようなコードで変更しています。 > > public class CommonFramePage extends WebPage { > > private static final long serialVersionUID = 1L; > > /** bodyコンポーネント(id属性変更用) */ > private WebMarkupContainer _body; > > public CommonFramePage() { > > String idType = "動的な値"; > > WebMarkupContainer body = new WebMarkupContainer("body"); > body.setOutputMarkupId(true); > body.add(new AttributeModifier("id",idType)); > add(body); > this._body = body; > } > > @Override > public CommonNaviFramePage add(Component... childs){ > for(Component c : childs) > { > if(null == _body || c instanceof HtmlHeaderContainer){ > super.add(c); > } else { > _body.add(c); > } > } > return this; > } > > } > > このとき、共通WebPageを継承した個別ページでFragmentを使用しているとRuntimeExeptionが発生し > Last cause: No Markup found for Fragment fragmentPage in providing markup container > というエラーになってしまいます。 > > ちなみに個別ページのFragmentのソースは以下のようにしています。 > > protected class setPage extends Fragment { > private static final long serialVersionUID = 1L; > public setPage(String id) { > > super(id, "fragmentPage", RentalListPage.this); > > WebMarkupContainer ulPage = new WebMarkupContainer("ulPage"); > > // 先頭ページリンク > Link<Void> linkStartPage = new Link<Void>("pageLinkStart"){ > private static final long serialVersionUID = 1L; > > @Override > public void onClick() { > // 先頭ページ表示 > setReplayPage(1,sort); > } > }; > > ulPage.add(linkStartPage); > add(ulPage); > } > } > > 同じことをPanelを使用してやってみまたところ、Panelの場合はエラーになりません。 > Fragmentの箇所をPanelに変更すれば、問題ないようなのですが、 > Fragmentではどうしてエラーになるのかわかりません。 > > また、htmlのbodyタグを動的に変更する方法でもっとスマートな方法があればご教示ください。 > > _______________________________________________ > Wicket-ja-user mailing list > Wicke****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user