Wicket应用程序中的全球可访问资源

时间:2009-10-27 17:40:18

标签: java css image wicket

目前,我有一个Application,它由一个BasePage组成,它作为标题(面板),页脚(面板)和继承页面内容的中心。我遇到的问题是ResourceReferences(也许这甚至不是正确的方法)。我正在寻找一个解决方案,让我可以做到以下几点:

  1. 为全局使用的图像js,css
  2. 设置一个目录
  3. 注册(或不注册)这些资源,以便可以从任何继承的页面或兄弟页面访问我将来可能创建的BasePage
  4. 允许在CSS和JS中访问这些资源(例如,图片的网址)
  5. 到目前为止,我已经阅读了几个示例,这些示例展示了如何为组件或应用程序级别范围打包资源,但似乎没有一个能够解决我正在寻求帮助的所有3个问题。至关重要的是,我不必将全局使用的图像(编辑图标,徽标等)复制到每个组件包中以进行引用,并且出于维护原因这些绑定可以在一个地方全局进行以便于参考,这将是很好的。更新

1 个答案:

答案 0 :(得分:7)

自Wicket 1.4以来,这已经发生了重大变化。请参阅'Adding Javascript or CSS using a Resource' in Wicket's Wiki

要使图像和其他资源可以全局访问(特别是从CSS和JS文件中),请将它们安装在Applications的init()方法中:

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

绝对不需要以任何方式复制资源。资源不必与组件本身位于相同的包中。在我们的应用程序中,我们将全局使用的资源放入专用包(比如com.example.myapp.images)并在其中放入一个类(例如ImagesScope.java) - 对于JS和CSS也是如此。

对于图像,您不需要ResourceReference,因为您不需要在代码中呈现这些引用(org.apache.wicket.markup.html.image.Image除外)。对于JS和CSS使用

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

顺便说一句,我是GitHub提供的little library called wicketstuff-merged-resources的作者。使用此库,您可以跳过应用程序的init()中的手动安装,而不是使用注释。

编辑:更新链接。不幸的是,wicketstuff wiki中的文档现在似乎已经消失了。虽然有some articles on our blog

相关问题