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

Does UnmappedResourceHandler work for library versioning?

我正在 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

我没有在任何地方读到它不起作用,所以我想知道我是否遗漏了什么?

谢谢,

javadoc and showcase中提到了它。

And the following CSS file reference (note: the library is not supported by the UnmappedResourceHandler! this is a technical limitation, just exclusively use name):

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

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

您有 2 个选择:

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

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

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

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

    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
     :
    

    只是更丑

无论如何,请随意删除最后的 /default 文件夹。