【问题标题】:Globally accessible resources in Wicket applicationWicket 应用程序中可全局访问的资源
【发布时间】:2009-10-27 17:40:18
【问题描述】:

目前,我有一个应用程序,它由一个 BasePage 组成,它作为页眉(面板)、页脚(面板)并位于继承页面内容的中心。我遇到的问题是 ResourceReferences (也许这甚至不是正确的方法)。我正在寻找一种可以让我执行以下操作的解决方案:

  1. 为全局使用的图像、js、css 提供一个目录
  2. 注册(或不注册)这些资源,以便可以从任何继承的页面或同级页面访问我将来可能创建的 BasePage
  3. 允许在 CSS 和 JS 中访问这些资源(例如,图片的网址)

到目前为止,我已经阅读了几个示例,这些示例展示了如何为组件或应用程序级别范围打包资源,但似乎没有一个示例能够解决我正在寻求帮助的所有 3 个问题。至关重要的是,我不必将全局使用的图像(编辑图标、徽标等)复制到每个组件包中以供参考,出于维护原因,最好将这些绑定在全局的一个位置进行以便于参考和更新。

【问题讨论】:

    标签: java css image wicket


    【解决方案1】:

    自 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 也是如此。

    对于图像,您不需要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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-11
    • 2018-12-02
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 2011-11-16
    • 2010-09-05
    • 2013-06-04
    相关资源
    最近更新 更多