UnmappedResourceHandler是否适用于库版本控制?

时间:2015-01-09 15:57:33

标签: jsf jsf-2 versioning omnifaces unmappedresourcehandler

我正在尝试OmniFaces中的UnmappedResourceHandler,最初我将所有资源都放在如下的目录结构中:

WebContent
 |-- resources
 |    `-- default
 |         `-- 1_0
 |              |-- css
 |              |    `-- style.css
 |              |-- img
 |              |    `-- logo.png
 |              `-- js
 |                   `-- script.js

UnmappedResourceHandler不适用于版本控制,而是有效:

WebContent
 |-- resources
 |    `-- default
 |        |-- css
 |        |    `-- style.css
 |        |-- img
 |        |    `-- logo.png
 |        `-- js
 |             `-- script.js

我没有在任何地方看到它不起作用所以我想知道我错过了什么?

谢谢,

1 个答案:

答案 0 :(得分:3)

javadocshowcase中提到了这一点。

  

以下CSS文件引用(注意:UnmappedResourceHandler不支持该库!这是技术限制,只使用名称):

<h:outputStylesheet name="css/style.css" />

技术限制是否则无法从CSS文件内部相对引用资源。使用库时,路径/default将移动到查询参数?ln=default,然后CSS文件将在错误的相对文件夹/resources/css而不是{{1}中查找相对图像引用}。

你有两个选择:

  1. 手动将版本附加到查询字符串。

    /resources/default/css

    您甚至可以为此编写另一个自定义资源处理程序。

  2. 使用基于文件名的版本控制。

    <h:outputStylesheet name="default/css/style.css?#{app.version}" />
    

    这只是丑陋的。

  3. 无论如何,最后只需删除WebContent |-- resources | `-- default | |-- css | | `-- style.css (this is a folder!) | | `-- 1_0.css | |-- img | | `-- logo.png (this is a folder!) | | `-- 1_0.png | `-- js | `-- script.js (this is a folder!) | `-- 1_0.js : 文件夹即可。