[Wicket-ja-user 639] Bodyタグのid属性の動的変更とFragmentのマークアップについて

Back to archive index

曽我 裕士 soga****@y-net*****
2012年 3月 14日 (水) 16:56:46 JST


曽我と申します。

現在、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 メーリングリストの案内
Back to archive index