web-dev-qa-db-ja.com

「このXMLファイルにはスタイル情報が関連付けられていないようです」というFaceletsページを開くエラー

他のコンピューターの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>
16
Krzysiek

この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>に登録されているFacesServletweb.xmlと一致することを確認する必要があります。 XHTMLソースコードに基づいて目的のHTML出力を生成できます。たとえば*.jsfの場合、/some.jsfではなく/some.xhtmlでページを開く必要があります。または、<url-pattern>*.xhtmlに変更することもできます。これにより、仮想URLをいじる必要がなくなります。

こちらもご覧ください:


したがって、実際にはXMLスタイルシートは必要ないことに注意してください。これはすべて、Webブラウザーによる誤った解釈であり、取得したHTTP応答コンテンツから何かを表示できるようにするために最善を尽くしています。 Firefoxは実際に適切に生成されたHTML出力を取得しているはずであり、FirefoxはHTMLコンテンツの処理方法を正確に知っています。

23
BalusC