2

I am trying out the UnmappedResourceHandler in OmniFaces, originally I had all my resources under a directory structure like:

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

The UnmappedResourceHandler doesn't work with the versioning, instead this works:

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

I haven't read anywhere that it doesn't work so I am wondering am I missing something?

thanks,

4

1 に答える 1

3

javadocshowcaseに記載されています。

そして、次の CSS ファイル リファレンス (注: ライブラリは UnmappedResourceHandler ではサポートされていません! これは技術的な制限であり、 name のみを使用してください):

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

技術的な制限は、CSS ファイル内からリソースを相対的に参照することができないことです。ライブラリを使用すると、パス/defaultがクエリ パラメーターに移動され、CSS ファイルはではなく?ln=default間違った相対フォルダーで相対イメージ参照を探します。/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 に答える