Wicketモーダルで table スクロール表示

先日の table でヘッダを固定してスクロールさせる表示を Wicket のモーダル表示で
やってみます。
HTMLソースの <table> の id 属性で指定したものを、どこで jQuery を実行させるかだけの
ことなのですが、
同じ<table> に他に Wicket の behavior が必要だったりする場合は、

WebMarkupContainer scrolltable = new WebMarkupContainer("scrolltable"){
   @Override
   public String getMarkupId(){
      return getId();
   }
};

のように、<table wiclet:id="scrolltable"> に対して id 属性値を Wicketの id自動割り振り機構から
守る必要がある。

まず、、
モーダルを表示する WebPage クラスで、renderHead をオーバーライドして、
jquery 宣言の後で jquery.tablefix_1.0.1.js を読むようにします。

@Override
public void renderHead(IHeaderResponse response){
   super.renderHead(response);
   response.render(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(SamplePage.class, "jquery-1.9.1.js")));
   response.render(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(SamplePage.class, "jquery.tablefix_1.0.1.js")));
}

モーダルの定義、<div wicket:id="modal"></div> が HTMLソースにあるものとします。

final ModalWindow window = new ModalWindow("modal");
window.setTitle("Data picker");
window.setInitialWidth(500);
window.setInitialHeight(400);
window.setCssClassName(ModalWindow.CSS_CLASS_BLUE);
window.setWindowClosedCallback(new ModalWindow.WindowClosedCallback(){
   @Override
   public void onClose(AjaxRequestTarget target){
      // ModalWindow が CLOSE
   }
});
add(window);


モーダルの呼び出しは、AjaxEventBehavior で、 "onclick" 等などで表示するものとして、
必ず実装する protected void onEvent(AjaxRequestTarget target) の target を使用してて、
以下のように呼び出す。

window.setContent(new FooDetailModal(window.getContentId()));
window.show(target);
target.appendJavaScript("$('#scrolltable').tablefix({ height: 120, fixRows: 1 });");

table の表示は、FooDetailModal という Wicket の Panel に任せます。
#scrolltable の指定と FooDetailModal.html 内に、
 <table id="scrolltable">
が存在するということ。