JSF URL が *.jsf である場合もあれば、*.xhtml である場合もあれば、/faces/* である場合もあります。なぜ?

StackOverflow https://stackoverflow.com/questions/3008395

質問

JSF を学ぼうとして、時々 URL が次のようになっているのを目にします。 *.jsf そして時々そうです *.xhtml または /faces/*. 。誰か私の知識を補ってくれませんか?Facelet を使用して JSF を作成すると、ファイル拡張子は次のようになります。 .xhtml, 、それではどこにありますか .jsf URL拡張子の由来は?

役に立ちましたか?

解決

.jsf 拡張子は、 FacesServlet JSF 1.2 期間中のもので、多くの場合、 web.xml.

<servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>

.xhtml 拡張子は 実際の Web アプリの Web コンテンツに物理的に配置した Facelets ファイル。 Webapp/WebContent/page.xhtml.

このページを次のコマンドで呼び出すと、 .jsf 拡張子、例: http://localhost:8080/webapp/page.jsf そうして FacesServlet が呼び出されます。 page.xhtml ファイルを作成し、その JSF コンポーネントを解析/レンダリングします。もし FacesServlet が呼び出されないと、エンドユーザーは生の XHTML ソース コードを取得することになります (右クリックすると表示されます)。 ソースを表示).

時々、 *.faces 延長または /faces/* フォルダーマッピングが使用されます。しかし、これは JSF 1.0/1.1 の時代に遡ります。使用したいマッピングを自由に選択して使用できます FacesServlet たとえ何も言わなくても聞いてください *.xyz. 。実際のページ自体には常に .xhtml 拡張子ですが、これは次のように設定できます <context-param>web.xml:

<context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xml</param-value>
</context-param>

これにより、 FacesServlet 見つける page.xml の代わり (デフォルト) page.xhtml.

最近では、JSF/Facelets 2.0 で *.xhtml マッピングが使用されます。JSF/Facelets 1.x では、物理ファイルと同じマッピング拡張子を使用できませんでした。無限ループが発生します。しかし、JSF/Facelets 2.0 以降ではそれが可能になり、次のようにしてページを呼び出すことができます。 http://localhost:8080/webapp/page.xhtml.

<servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

この方法では、エンドユーザーが変更された場合などに備えて生のソース ファイルを隠すためにセキュリティ制限を設定する必要がなくなります。 .jsf への URL .xhtml ブラウザのアドレスバーにあります。推奨されている移行に追いつく必要があるのは、ツール (IDE とプラグイン) と学習リソースだけです。 *.jsf*.xhtml. 。JSF 2.3 によると、 FacesServlet デフォルトでは自動登録されます *.xhtml も(隣に) /faces/*, *.faces そして *.jsf)。これは Mojarra 2.2.11 にバックポートされています。

以下も参照してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top