JSF 2でのfaces-config.xmlの用途は何ですか?


89

JSF 2でアノテーションが大きくサポートされた後、何を使用するのか迷っていfaces-config.xmlます。現在、その重要性は何ですか?

つまり、faces-config.xmlアノテーションを介してのみ実行でき、アノテーションを介して実行できない設定は何ですか?

現在私がそれを使用しているのは、SpringのELリゾルバを宣言することだけです。

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">

    <application>
        <el-resolver>
            org.springframework.web.jsf.el.SpringBeanFacesELResolver
        </el-resolver>
    </application> 
</faces-config>

1
なぜ組み込みELResolverを指定する必要があるのですか?設計哲学は構成よりも慣習だと思いました...
masterxilo '19年

私も私の中にはありません<el-resolver>faces-config.xmlそれは完全に働いています。
Roland

回答:


142

それはまだ注釈を付けることができない多くのものに使用されます。たとえば、カスタムJSF検証メッセージ:

<application>
    <message-bundle>com.example.i18n.messages</message-bundle>
</application>

グローバルi18nバンドル(<f:loadBundle>すべてのビューで宣言する必要がないように):

<application>
    <resource-bundle>
        <base-name>com.example.i18n.Text</base-name>
        <var>text</var>
    </resource-bundle>
</application>

明示的にサポートされているi18nロケール(メッセージバンドルまたはリソースバンドルが存在していても、宣言されていないロケールは無視されます):

<application>
    <locale-config>
        <default-locale>en</default-locale>
        <supported-locale>nl</supported-locale>
        <supported-locale>es</supported-locale>         
        <supported-locale>de</supported-locale>         
    </locale-config>
</application>

カスタムビューハンドラー

<application>
    <view-handler>com.example.SomeViewHandler</view-handler>
</application>

フェーズリスナー(そのための注釈はまだありません):

<lifecycle>
    <phase-listener>com.example.SomePhaseListener</phase-listener>
</lifecycle>

注釈を付けることができないマネージドBean(以下のものはに電流Dateを提供します#{now}):

<managed-bean>
    <description>Current date and time</description>
    <managed-bean-name>now</managed-bean-name>
    <managed-bean-class>java.util.Date</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

こうしたカスタム例外ハンドラファクトリなどのカスタム工場、(それはまたのために工場を可能にするFacesContextExternalContextLifeCycleと、より多くのあなたがあなたのカスタム実装を提供できること):

<factory>
    <exception-handler-factory>com.example.SomeExceptionHandlerFactory</exception-handler-factory>
</factory>

一般的に使用されるものだけを挙げます。faces-config.xmlIDEにタグのオートコンプリートがある場合、それらをすべて見つけることができます。新しいアノテーションと暗黙のナビゲーションにより、マネージドBean、バリデーター、コンバーター、コンポーネント、レンダラー、ポイントツーポイントナビゲーションケースのみが不要になりました。


7
@マット:すべてのコンポーネントバインディングの宣言型の概要を理解するために、リクエストスコープにjava.util.HashMapas #{components}が保存されているプロジェクトがあります。例えば、binding="#{components.foo}"として参照することができる#{components.foo}自己文書より少ない危険である(潜在的な名前の衝突に起因する)よりbinding="#{foo}"#{foo}
BalusC 2011

2
el-resolverを指定するための注釈も探していました。今、これらのアプリケーションプロパティをannotation..right .. ??で指定する方法はないと思います。
Rup Majumder

@RupMajumderそのような注釈をどこに置きたいのですか、つまりどのクラスを意味しますか?このプロパティはアプリケーション全体に広がっています。
iozee 2014年

1
FWIW、Apache Deltaspikeを使用する場合、JsfPhaseListenerアノテーションを使用して、faces-config.xmlで設定する必要なくフェーズリスナーを使用できます。
jpangamarca 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.