我所看到的例子包含這樣的事情:什麼是Wicket中的ResourceReferences,它們是如何工作的?
mountSharedResource("/images/logo.gif", new ResourceReference(ImageScope.class,
"logo.gif").getSharedResourceKey());
mountSharedResource("/resource",
Application.class.getName() + "/" + resourceKey);
但Javadoc中說,這爲構造函數:
ResourceReference(java.lang.Class<?> scope, java.lang.String name);
所以,當你創建一個ResourceReference
,你給它一個類。爲什麼?通常你會想要全局作用域或你創建的ResourceReference
對象的範圍,不是?
另外,什麼是name
?是sharedResourceKey
?如果不是,resourceKey
從哪裏來?它是如何產生的,爲什麼不是它的名字?或者是name
在類路徑中查找,然後神奇地加載(假設在類路徑中只有一個文件具有該名稱;如果有多個,會發生什麼?)?如果它確實加載了一個具有該名稱的文件,爲什麼不在Javadoc中這麼說呢?
你怎麼真的把物理資源分配給這個ResourceReference
?有一個getResource()
,但他們似乎錯過了setResource()
。如果你在你的目錄中有一個圖像文件,你如何「附加」引用文件,它的路徑,甚至是文件內容的字節流?如果有一種方法可以讀取webapp中的資源,這可能是有用的,但是你不能;它只在類路徑中。
我希望能夠「掛載」webapp/games/someGame.swf
的內容,以便webkit中的SWF可以通過Wicket頁面訪問,或者只是獲取某種類型的句柄。
這樣做很有意義,謝謝!那麼參數名稱是不正確的:它應該被稱爲「路徑」或「文件名」。如果路徑相對於類的位置(推測是/ com/something/package),那麼如何引用webapp中的文件,這是他們始終保存的位置(無論如何)。這是關鍵 - 我們想要在webapp的遊戲目錄中處理swf文件,並且沒有找到任何方法來完成此操作:因此,對ResourceReference最初的興趣。 – wingnut
正確,'name'是相對於'範圍'(類)位置的路徑。這由類包名決定,它在物理上位於文件系統上。 name參數不支持使用'../ ..'表示法進一步向上瀏覽目錄樹的聰明事情。所以你的資源必須是相對於類文件的位置。 順便說一句,我真的建議抓住我提到的那本書,這很好。 –
注意[ResourceReference](http://www.jarvana.com/jarvana/view/org/apache/wicket/wicket/1.5-M1/wicket-1.5-M1-javadoc.jar!/org/apache/wicket/request /resource/ResourceReference.html)是一個抽象類,不能實例化。 – TOUDIdel