2011-01-06 3 views
20

Faceletsを使用した簡単なJSF2アプリケーションがあります。次のように私のweb.xmlが設定されている: -facesサーブレットマッピングを使用してJSF2 <welcome-file>を設定するにはどうすればよいですか?

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

私は/pages/login.xhtmlでウェルカムページをデフォルトにアプリを設定したいです。私はウェルカムファイルの設定がブラウザのコンテキストルートに行くときにこれを拾うように見えることはできません。

次のように私のweb.xml歓迎設定は次のとおりです。 -

<welcome-file-list> 
<welcome-file>/pages/login.jsf</welcome-file> 
</welcome-file-list> 

は、どのように私は後藤にログインページを歓迎し、ページを強制し、それが顔のサーブレットを通過することを確認しますか?

私は、次のページが表示されます使用しますが、それは顔のサーブレットを通じて行っておりませんので、コンポーネントがレンダリングされません直面している場合: -

<welcome-file-list> 
<welcome-file>pages/login.xhtml</welcome-file> 
</welcome-file-list> 

すべてのヘルプ感謝!

答えて

22

login.xhtmlファイルの隣に空のlogin.jsfファイルを作成する必要があります。何らかの理由で、このハックはサーブレットコンテナを歓迎して、あなたのウェルカムファイルが存在すると思うようにする必要があります。

注:返されるレスポンスは、作成した空のlogin.jsfファイルではなく、login.xhtmlファイルを使用したJSF応答です。

+3

編集のおかげでBalusC - 私は私が読んでいた質問ではなく、私が期待していた質問に答えました! –

+0

それは動作します!答えに対する多くの感謝と編集! – oidsman

+0

ありがとう。よく働く。 –

1

オリジナルの解決方法に関する追加情報。

これは、バージョン3より前のサーブレットコンテナの下位互換性の必要性に過ぎません。たとえば、Glassfish 3.1またはTomcat 7で実行した場合、このような空のファイルは必要ありません。私はTomcat 6とTomcat 7を使って検証するためにテストを実行しました。これまでGlassFishでテストを実行していましたが、現在Tomcat 6でソフトウェアを実行していて、3.0サーブレットコンテナではないため、私はリダイレクトを伴うJSPページを使用していましたが、Faceletsに完全に移動した後、JSPページ上に残っているものは嫌でした。これは、3.0サーブレットコンテナで動作するまでの間、近い将来の素晴らしい解決策です。本当の理由は、すべてがWEB.XMLエントリで処理されているということです。ファイルの存在をチェックすることです。実際の作業はJSFに対して処理され、facesページへのリクエストをキャッチします。したがって、空のページには何も載せません。