2011-11-03 30 views
3

我需要在體內放置一個腳本標籤,因爲javascript在head標籤中不起作用。體檢標籤中的Wicket 1.5 Javascript文件

由於檢票1.5以下的代碼不再支持:

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

這是因爲該類JavaScriptReference不再存在。

我明顯不能使用新的renderHead方法。

我的解決方法到目前爲止:

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); 

真難看除此之外,這是行不通的;找不到javascript文件。

有沒有其他解決方法或「正確」的方法來做到這一點?

回答

6

您是否嘗試過使用帶有資源引用的urlFor?就像..

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

我不會期望您的當前方法由於Wicket的複雜資源管理而開箱即用。另外,儘管可能有其他「正確」的方式來做事,但我經常發現第三方的JavaScript可能對定位非常挑剔,而我仍然需要爲某些腳本回避這種方法。

例如,我使用的一個腳本必須是頁面上的最後一個元素。

+0

感謝您的回答!它現在找到資源。這裏是可編譯的代碼(ResourceReference是抽象的,urlFor給你一個CharSequence):'script.add(new AttributeAppender(「src」,urlFor(new JavaScriptResourceReference(BaseTemplate.class,「wz_tooltip.js」),null).toString() ));' – rotsch

+0

更新了可編譯的代碼 - 我還沒有遷移到1.5,所以我沒有意識到'ResourceReference'已經改變了很多。 – jbrookover

+0

誰是腳本? WebMarkupContainer? –