1

私は典型的な方法で JSF プロジェクトをセットアップしています。

myproject
  |-- src/main/webapps
  |    |-- resources
  |    |    |-- css
  |    |    |     |-- 3rdparty.css
  |    |    |      
  |    |    |-- fonts  
  |    |         |    
  |    |         |-- myspecialfont.woff
  |    |         

そして、私のJSF htmlで:

 <h:outputStylesheet name="3rdparty.css" library="css"/>

アップグレードが必要な場合にディレクトリの一貫性を保つことができるため、これはうまく機能します。

ただし、この場合、3rdparty.css ファイルには相対参照が含まれています。

@font-face {
  font-family: 'Lato';
  src: url('../fonts/myspecialfont.woff');
}

h:outputStylesheet は使用する URI を構築するmywebapp/javax.faces.resource/3rdparty.cssため、パスが を参照するようになるため、内部の相対参照が壊れますmywebapp/fonts/myspecialfont.woff

CSS を手動で変更することなく、この種の相対参照を処理するために、これらのローカルにホストされたサードパーティ ライブラリを JSF によって参照されたままにする良い方法はありますか?

4

1 に答える 1

3

次の 2 つのオプションがあります。

  1. outputStyleSheet を使用せず、代わりにテンプレートに直接含めないでください
  2. CSS ファイルの内容を変更します (TemarV が提案したように)

残念ながら、リソースは別のパスを使用してレンダリングされ、ライブラリとリソース参照は URL の一部ではなく URL パラメーターとして指定されるため、他にできることはあまりありません。

編集:カスタム ResourceHandler を作成するという 3 番目のオプションも強調したいと思います。これらの行で何かをしなければなりませんでした。あなたはそれについてもっと読むことができます -

http://roguexz.blogspot.in/2013/10/jsf-2-returning-resource-url-that-is.html

于 2013-10-09T13:07:40.727 に答える