java - Wicket 应用程序中的全局可访问资源

标签 java css image wicket

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

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

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

最佳答案

自 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"));

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

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

关于java - Wicket 应用程序中的全局可访问资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1632478/

相关文章:

jQuery : Merge column of table

javascript - 简单问题 : Do I need to specify width, "image"预加载图片时的高度?

image - 在 Symfony 1.4.8 中显示图像时出错

image - 从输入图像获取RGB像素并在opencv中重建输出图像

java - 如何使用 OnClick 事件的命令参数动态添加按钮

html - flex 孙子不会扩展到直接 parent 的高度

java - 如何截去小数点前的数字?

.net - 更改 "project.net"的默认主题

java - System.out.print 同时打印两行/问题。我究竟做错了什么?

java - JLayeredPane,背景图像+ "icon"图层