読者です 読者をやめる 読者になる 読者になる

通常のPanel 描画でJavaScriptを実行する

Wicket Panel を表示するタイミングで、JavsScriptを動かすにはどうしたらいいか?
WicketAJAX イベントではなく、ページの初期表示= 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>