2

我正在尝试使用UnmappedResourceHandlerOmniFaces,最初我的所有资源都在一个目录结构下,例如:

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

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

谢谢,

4

1 回答 1

3

它在javadocShowcase中提到。

以及以下 CSS 文件参考(注意:UnmappedResourceHandler 不支持该库!这是技术限制,仅使用 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文件夹。

于 2015-01-09T16:18:53.460 回答