6

複数のfaces構成ファイルを作成する場合、faces-config.xmlをWEB-INFの外部に置くのは正しいですか?JSF仕様は、これについてあまり明確ではないようです(セクション10.1.3)

はいの場合、このfaces-config.xmlをweb.xmlでどのように宣言する必要がありますか?IDE(Eclipse / JDevなど)によって生成されるパスは、通常、次のようなものを使用します。

<context-param>
    <param-name>javax.faces.CONFIG_FILES</param-name>
    <param-value>/WEB-INF/faces-config1.xml</param-value>
</context-param>

さて、私のfaces-config.xmlがWEB-INFの外にある場合、param-valueを「/WebContent/WEB-INF/faces-config2.xml」のように宣言するのは正しいですか?

4

3 に答える 3

7

可能ですが、お勧めしません。構成ファイルを WEB-INF の下に置く理由は、サーバーがこれらのファイルを提供しないことを認識しているためです。コード、データベース構成、およびその他の機密情報がそこにあります。

「/WebContent/WEB-INF/faces-config2.xml」は使用できません-AFAIK「WebContent」はEclipse固有です。構成ファイル名がWAR内で絶対になるようにします。これは、常に「/WEB-INF/」で始まることを意味します。

于 2009-09-02T12:27:49.470 に答える
1

David の回答で述べたように、構成ファイルを WEB-INF ディレクトリの外に置くことはお勧めしません。ただし、プロジェクトを整理する方法を探している場合は、WEB-INF の下に新しいサブディレクトリを作成してみてください。

たとえば、多数のfaces-configファイルを扱っている場合、ディレクトリ/WEB-INF/configを作成してfaces-configファイルをそこに置きます。

于 2009-09-04T04:37:20.487 に答える
0

それらを web.xml から参照している場合、ファイルは実行時に war にある必要があります。コンテナーが faces-config.xml リソースを検出できる方法は他にもあります。

10.4.2 アプリケーションの起動時、リクエストが処理される前に、JSF実装は、次のアルゴリズムに従って配置された0個以上のアプリケーション構成リソースを処理する必要があります。

  • この Web アプリケーションの ServletContext リソース パスで「META-INF/faces-config.xml」という名前のすべてのリソースを検索し、それぞれを JSF 構成リソースとしてロードします (getResources() によって返される順序とは逆の順序で)。現在のスレッドの ContextClassLoader で)。

  • javax.faces.CONFIG_FILES という名前のコンテキスト初期化パラメーターの存在を確認してください。存在する場合は、コンテキスト相対リソース パス (「/」で始まる) のカンマ区切りリストとして扱い、指定された各リソースをロードします。

  • 「/WEBINF/faces-config.xml」という名前の Web アプリケーション構成リソースの存在を確認し、リソースが存在する場合はそれをロードします。

于 2009-09-02T12:38:11.470 に答える