私はJSFおよびXHTMLテンプレートを使用しており、テンプレートでCSSファイルを使用しています。背景画像は次のように呼び出されます。
background-image: url("../../images/imageFile.jpg");
テンプレートを使用しているため、ページとスタイル/画像の両方で同じ深さを維持する必要があることがわかりましたが、プロジェクトに変更が加えられ、フォルダーとページに可変の深さが必要になり、このアプローチは実行できなくなりました。
それから私の質問は:
CSSファイル内で相対パス(、、など)をコンテキストパス(、、など)に置き換える方法はあり../../
ます ../
か<%Request.getContextPath()%>
? #{facesContext.requestContextPath}
- - -アップデート - - -
絶対的な道は問題外です。テンプレートベースのページ(どの深さでも)がCSSファイルから参照されているスタイルと画像のリソースを見つけることができる必要があります。
現在、これは、ページ、スタイル、および画像がアプリケーションのフォルダー構造で同じレベルの深さを共有している場合にのみ可能ですが、新しいプロジェクト要件によりこれを行うことができないため、これ以上このアプローチを維持することはできません。
<root>
アプリケーションルートへのパスである私のプロジェクトファイル構造の例:
CSS(depth-2):次<root>/styles/global/myStyles.css
のような深さ2のパス参照を持つスタイルが含まれます。
background-image: url("../../images/imageFile.jpg");
画像(深さ-2):<root>/images/basic/imageFile.jpg
テンプレート(深さ-2):<root>/template/general/template1.xhtml
ページ(深さ-2):(正常に<root>/pages/folder1/page1.xhtml
動作します)
ページ(depth-N):(<root>/pages/folder1/.../folderN/page2.xhtml
壊れた画像とスタイル)