1. ホーム
  2. xml

[解決済み】JSF Faceletsのページを開くと、"このXMLファイルにはスタイル情報が関連付けられていないようです。"と表示される。

2022-01-18 22:20:49

質問

EclipseのJSFプロジェクトを他のコンピュータのApache Tomcatで実行しようとしています。 私は次のような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ブラウザ)が何らかの理由でHTML文書を表すHTTPレスポンスの内容を次のように解釈した場合に、クライアント側でこのメッセージが表示されます。 text/xml ではなく text/html で、パースされたXMLツリーには XML-stylesheet . つまり、HTTP レスポンスのコンテンツタイプが不明または不正確なため、Web ブラウザは取得した HTTP レスポンスのコンテンツを HTML ではなく XML として解析しています。

JSF/Faceletsのファイルで、デフォルトの拡張子が .xhtml を呼び出していない場合に起こる可能性があります。 FacesServlet そのため、Facelets ファイルを解析し、XHTML ソースコードに基づいた望ましい HTML 出力を生成することができませんでした。Firefox は、HTTP レスポンスのコンテントタイプを .xhtml ファイル拡張子は、Firefoxの設定にあるように、デフォルトで次のように解釈されます。 text/xml .

ブラウザのアドレスバーに表示されるHTTPリクエストのURLが <url-pattern>FacesServlet に登録されているように、Webappの web.xml そうすれば、XHTML のソースコードに基づいて希望する HTML 出力を生成することができます。もしそれが例えば *.jsf でページを開く必要があります。 /some.jsf の代わりに /some.xhtml . または、単に <url-pattern> から *.xhtml . こうすることで、仮想URLをいじる必要がなくなります。

こちらもご覧ください。


このように、実際にはXMLスタイルシートは必要ないことに注意してください。あなたの特定のケースでは、取得したHTTPレスポンスのコンテンツから見やすいものを作るために最善を尽くそうとしているときに、ウェブブラウザが誤った解釈をしただけです。