java - Wicket 中的 ResourceReferences 是什么,它们是如何工作的?

标签 java wicket resourcereference

我见过这样的例子:

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/

相关文章:

java - 无法处理 Selenium WebDriver 中的 Ajax 弹出窗口

java - 如何在 Spring/Hibernate 事务中包装 Wicket 页面渲染?

java - GLPK for Java 中的输入/输出

java - 将 XML 解析值添加到 JList 中不起作用

java JFrame setContentPanel 然后 JPanel 消失

javascript - Wicket 6 - 使用 AjaxCallListener 防止 jQuery 调用将页面滚动到顶部

java - Wicket 组件不会通过 AJAX 刷新

assembly - QASM 中的量子计算模拟

Wicket 6 webapp 上下文资源