我见过这样的例子:
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 中的资源,这可能会有用,但你不能;它只在类路径中。
我希望能够“挂载”webapp/games/someGame.swf
的内容,以便 Wicket 页面可以访问 webapp 中的 SWF,或者只是对他们进行某种处理。
最佳答案
图像等资源通常与特定网页相关联。因此将该图像放在与 Java 和 HTML 文件相同的位置是有意义的。
类参数用作查找资源的基础。 ResourceReference 构造函数的第二个参数是资源的名称,相对于包含该类的目录。
所以例如你可以 -
new ResourceReference(AClass.class, "sub/directory/image.jpg");
您只需在部署应用程序时将资源放置在正确的目录中即可分配物理资源。
《Wicket in Action》一书中有一章是讲资源使用的。
关于java - Wicket 中的 ResourceReferences 是什么,它们是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6685608/