Javascript を
HTML の
以前、<wicket:header-items ></wicket:header-items>
タグと、
script タグ の
実装してみた
前提
- Wicket version 7.6.0です。
<dependency> <groupId>org.apache.wicket</groupId> <artifactId>wicket-core</artifactId> <version>7.6.0</version> </dependency>
参考
Forcing Wicket to place JavaScript files at the bottom - Tomasz Dziurko
IHeaderResponseDecorator と、FilteringHeaderResponse を 使って、 HeaderItem の 出力を 2箇所に 振り分けています。 wicket/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration at master · apache/wicket
Github のresourcedecoration Example ページ
何故 body の 閉じ タグ直前に 出力したいのか
[JS] JavaScript の
など、
基本的に、
実装
以下、
script タグを
Application クラスに
HeaderResponseDecorator の 設定処理を 追加 // set ResponseDecorator setHeaderResponseDecorator(response -> { // use this header resource decorator to load all JavaScript resources in the page // footer (after </body>) return new JavaScriptFilteredIntoFooterHeaderResponse(response, "footerJS"); });
HTML body タグの
直前に、 wicket:container
タグを追加 <wicket:container wicket:id="footerJS"></wicket:container> </body>
Page クラスで
HeaderResponseContainer を 追加 add(new HeaderResponseContainer("footerJS", "footerJS"));
これで、
JavaScriptHeaderItem
を
body タグの
header タグ内には、
Filter 名は、FilteringHeaderResponse.DEFAULT_HEADER_FILTER_NAME
を
- renderHead メソッド
@Override public void renderHead(IHeaderResponse response) { super.renderHead(response); // bodyタグ直前に追加する String onReadyScript = null; try (PackageTextTemplate template = new PackageTextTemplate(this.getClass(), "pageOnReady.js", "text/javascript")) { onReadyScript = template.asString(); } catch (IOException e) { throw new IllegalStateException(e); } response.render(JavaScriptHeaderItem.forScript(onReadyScript, "onReadyScript")); // header部に追加する response.render(new FilteredHeaderItem(JavaScriptHeaderItem.forUrl("/static/js/custom.js"), FilteringHeaderResponse.DEFAULT_HEADER_FILTER_NAME)); }
以上です。
コメント