2009-10-27 86 views
7

當前,我有一個由BasePage組成的應用程序,該BasePage作爲頁眉(面板),頁腳(面板)以及繼承頁面內容的中心。我遇到的問題是ResourceReferences(也許這不是正確的方法)。我要尋找一個解決方案,它可以讓我做到以下幾點:Wicket應用程序中全局可訪問的資源

  1. 有一個單一的目錄全球使用的圖像,JS,CSS
  2. 註冊(或沒有)這些資源,使他們能夠從訪問任何繼承頁面或兄弟姐妹的頁面的BasePage我可能會在未來
  3. 創建允許這些資源是CSS和JS中訪問(如包含圖片)

到目前爲止,我已經通過幾個例子,說明如何讀爲組件或應用程序級sco打包資源PE,但似乎沒有解決我尋求幫助的所有3個問題。至關重要的是,我不必將全局使用的圖像(編輯圖標,徽標等)複製到每個組件包中以供引用,並且出於維護原因,這些綁定在全球範圍內製作以便於參考和更新。

回答

7

自Wicket 1.4以來,這已經發生了顯着變化。請參閱'Adding Javascript or CSS using a Resource' in Wicket's Wiki

爲了使圖像和其他資源的全局訪問(尤其是CSS和JS文件),將它們安裝在您的應用程序的init()方法:

mountSharedResource("/images/submit.jpg", new ResourceReference(MyComponent.class, "foo.jpg").getSharedResourceKey()); 

完全沒有必要重複資源以任何方式。資源不必與組件本身位於相同的包中。在我們的應用程序中,我們將全局使用的資源放入專用軟件包(比如com.example.myapp.images)並放入一個類(例如ImagesScope.java) - 對於JS和CSS也是如此。

對於圖像,您將不需要0​​,因爲您不需要在代碼中呈現的那些引用(org.apache.wicket.markup.html.image.Image除外)。對於JS和CSS使用

add(CSSPackageResource.getHeaderContribution(PanelOne.class, "PanelOne.css")); 

順便說一句,我可用little library called wicketstuff-merged-resources從GitHub的作者。使用這個庫你可以跳過你的應用程序的init()中的手動裝入,而是使用註釋。

編輯:更新的鏈接。不幸的是,wicketstuff wiki中的文檔似乎已經消失。雖然有some articles on our blog

+0

鏈接到小圖書館doesent工作 –

+0

語法可能會有所不同:https://cwiki.apache.org/confluence/display/WICKET/Adding+Javascript+or+CSS+using+a+Resource – Sebas

+0

@Sebas你」再右吧。我在鏈接的開頭添加了註釋。答案最初是爲Wicket 1.4編寫的。 – sfussenegger

相關問題