他のコンピューターのApache TomcatでEclipse JSFプロジェクトを実行しようとしています。 このチュートリアル でWARファイルを作成しました。ただし、WARをデプロイしてFirefoxでFaceletページを開くと、次のエラーメッセージのみが表示されます。
このXMLファイルには、スタイル情報が関連付けられていないようです。ドキュメントツリーを以下に示します。
EclipseなしでJSFアプリを実行しようとするのはこれが初めてです。これはどのように引き起こされ、どうすれば解決できますか?
実際に次のFaceletページを開こうとしています。
<?xml version="1.0" encoding="UTF-8"?>
<ui:composition template="/WEB-INF/templates/template_a.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://Java.Sun.com/jsf/core"
xmlns:h="http://Java.Sun.com/jsf/html"
xmlns:ui="http://Java.Sun.com/jsf/facelets">
<ui:define name="title">
tytol
</ui:define>
</ui:composition>
このXMLファイルには、スタイル情報が関連付けられていないようです。ドキュメントツリーを以下に示します。
クライアント(Webブラウザー)が何らかの理由でHTTP応答コンテンツをtext/xml
ではなくtext/html
として解釈し、解析されたXMLツリーに何もない場合、クライアント側でこのエラーが発生します XMLスタイルシート 。言い換えると、Webブラウザーは、HTTP応答コンテンツタイプが間違っているか欠落しているため、取得したHTTP応答コンテンツをHTMLではなくXMLとして誤って解析しました。
デフォルトの拡張子が.xhtml
であるJSF/Faceletsファイルの場合、HTTP要求がFacesServlet
を呼び出していないためにFaceletsを解析できなかった場合に発生する可能性がありますファイルし、XHTMLソースコードに基づいて目的のHTML出力を生成します。 Firefoxは、デフォルトで.xhtml
として解釈されるFirefox設定にあるtext/xml
ファイル拡張子に基づいて、HTTP応答コンテンツタイプを推測しているだけです。
ブラウザのアドレスバーに表示されるHTTPリクエストURLが、webappの<url-pattern>
に登録されているFacesServlet
のweb.xml
と一致することを確認する必要があります。 XHTMLソースコードに基づいて目的のHTML出力を生成できます。たとえば*.jsf
の場合、/some.jsf
ではなく/some.xhtml
でページを開く必要があります。または、<url-pattern>
を*.xhtml
に変更することもできます。これにより、仮想URLをいじる必要がなくなります。
したがって、実際にはXMLスタイルシートは必要ないことに注意してください。これはすべて、Webブラウザーによる誤った解釈であり、取得したHTTP応答コンテンツから何かを表示できるようにするために最善を尽くしています。 Firefoxは実際に適切に生成されたHTML出力を取得しているはずであり、FirefoxはHTMLコンテンツの処理方法を正確に知っています。