Wicket 1.5 Javascript File in Body Tag

2019-02-18 19:14发布

I need to put a script-tag inside the body, because the javascript doesn't work in the head tag.

As of Wicket 1.5 the following code is not longer supported:

add(new JavaScriptReference("wz_tooltip", new JavaScriptResourceReference(BaseTemplate.class, "wz_tooltip.js")));

This is because the class JavaScriptReference no longer exists.

I can't obviously use the new renderHead method.

My workaround so far:

WebMarkupContainer script = new WebMarkupContainer("script");
script.add(new AttributeAppender("type", Model.of("text/javascript")));
script.add(new AttributeAppender("src", Model.of("wz_tooltip.js")));
add(script);

Really ugly apart from that it doesn't work; can't find the javascript files.

Is there any other workaround or a "right" way to do it?

1条回答
放我归山
2楼-- · 2019-02-18 19:35

Have you tried using a urlFor with a resource reference? Something like..

script.add(new AttributeAppender("src", urlFor(new JavaScriptResourceReference(BaseTemplate.class, "wz_tooltip.js"), null).toString())); 

I wouldn't expect your current method to work out of the box because of Wicket's complex resource management. Also, while there may be other "right" ways to do things, I've often found that 3rd-Party javascript can be finicky about placement and I still need to fall back on this method for some scripts.

For example, one script I use must be the last element on the page.

查看更多
登录 后发表回答