Wicket の Panel を表示するタイミングで、JavsScriptを動かすにはどうしたらいいか?
Wicket の AJAX イベントではなく、ページの初期表示= Panelコンポーネントを配置(add)した時に実行するには、、
レンダリングのメソッドである onAfterRender() を使う。
public class SomePanel extends Panel{
@Override
protected void onAfterRender(){
super.onAfterRender();
JavaScriptUtils.writeJavaScript(getResponse(), "alert('This Panel renderd !!');");
}
}
onAfterRender() の中で、JavaScriptUtils の staticメソッド、writeJavaScript で HTTP の応答として
Wicket の常套手段である org.apache.wicket.request.Response を取得してこれに、JavaScript を流し込むのである。
だから、getResponse() を実行している。
ここでgetResponse() 実行できるところが Wicket の凄いところ。
ブラウザに応答して表示させたHTMLの結果は、Panel を書いた箇所の末尾に、
JavaScript のタグ、以下のタグで囲まれて、JavaScriptUtils.writeJavaScript で渡す JavaScriptコードが書かれることを
念頭に使うことになる。
<script type="text/javascript">
/*<![CDATA[*/
alert('This Panel renderd !!');
/*]]>*/
</script>