外部CSSファイルをjsfに追加する構文は何ですか?
両方の方法を試しましたが、役に立ちませんでした。
1.
<head>
<style type="text/css">
@import url("/styles/decoration.css");
</style>
</head>
2.
<head>
<link rel="stylesheet" type="text/css" href="/styles/decoration.css" />
</head>
BalusC があなたの答えを持っていると思います。
ただし、いくつかの追加点を追加したいと思います。
Web アプリケーションのサブディレクトリで を実行しているとします。私の経験として、これを試してみてください:
<link href="${facesContext.externalContext.requestContextPath}/css/style.css" rel="stylesheet" type="text/css"/>
この'${facesContext.externalContext.requestContextPath}/'
リンクは、コンテキストのルートにすぐに戻るのに役立ちます。
編集/
:から削除され'href="/${facesContext.ex...'
ました。アプリケーションがルート コンテキストで実行されている場合、CSS URL は で始まり//
、ブラウザは CSS を として解釈するため、見つけることができませんでしたhttp://css/style.css
。
私は前者を使用したことがありませんが、後者は構文的に有効であり、技術的には機能するはずです。それが機能しない場合は、href
属性の相対URLが単に間違っています。
相対URLでは、先頭のスラッシュ/
はドメインルートを指します。したがって、たとえばJSFページがによって要求された場合、CSSURLhttp://example.com/context/page.jsf
は絶対にを指しますhttp://example.com/styles/decoration.css
。有効な相対URLを知るには、JSFページとCSSファイルの両方の絶対URLを知り、一方を他方から抽出する必要があります。
CSSファイルが実際ににあると仮定すると、現在のコンテキスト(の1つ)http://example.com/context/styles/decoration.css
を基準にするために、先頭のスラッシュを削除する必要があります。page.jsp
<link rel="stylesheet" type="text/css" href="styles/decoration.css" />
更新された JSF 2.0 メソッドは、少し整理されています。それ以外の:
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/css/compass.css"/>
あなたは今これを行います:
<h:outputStylesheet library="css" name="compass.css"/>
resources\css.
スタイルシート リソースは、リソースが WEB-INF と同じレベルにある場所に配置する必要があります。
セルジオニの問題には 2 つの側面があると思います。
まず、いわゆるルート相対は、BalusC が言ったように、実際にはドメイン相対であることは事実です。したがって、この例では、相対であり、ではhttp://example.com/
ありませんhttp://example.com/context/
。
したがって、指定する必要があります
<link rel="stylesheet" type="text/css" href="${request.contextPath}/styles/decoration.css" />
ところで、BalusC さん、おめでとうございます。これが正しく説明されているのを見るのはこれが初めてです。これを発見するのにかなり苦労しました。
ただし、単純化して提案したい場合:
<link rel="stylesheet" type="text/css" href="styles/decoration.css" />
スタイルディレクトリが現在のページの兄弟であると仮定すると、2番目の問題が発生する可能性があります。
次に、相対 URL メソッドに入ります。リダイレクトではなく転送によってこのページにアクセスした場合、ブラウザーがだまされて相対パスをたどることができない可能性があります。
この 2 番目の問題を解決するには、これを追加する必要があります。
<head>
<base href="http://${request.serverName}:${request.serverPort}${request.contextPath}${request.servletPath}" />
base 要素は、どのリンクよりも前にある必要があります。
base コマンドを使用すると、ブラウザーに自分の実際の場所を伝えることができます。
それが役に立てば幸い。
そしてところで、この素晴らしい jsf の世界でもう 1 つ奇妙なことがあります。
ページからその facelet テンプレートにリンクするには、今回はルート相対リンク IS にコンテキストを含めます。
<ui:composition template="/layouts/layout.xhtml">
これは本当にhttp://example.com/context/layouts/layout.xhtml
またはをhttp://example.com/layouts/layout.xhtml
好まない。<a>
<link>
ジャン=マリー・ガリオット
以下のコードを試して、css を jsf ページにインポートしてください。確実に機能します。
<style media="screen" type="text/css">
@import "#{facesContext.externalContext.request.contextPath}/css/Ebreez.css"
</style>