Faces-config.xml'nin JSF 2'de kullanımı nedir?


89

JSF 2'nin ek açıklamalar için büyük desteğinden sonra, ne faces-config.xmliçin kullanacağımı merak ediyorum . Şimdi önemi nedir?

Başka bir deyişle, yalnızca faces-config.xmlek açıklamalar aracılığıyla yapılabilen ve olmayan yapılandırmalar nelerdir?

Şu anda kullandığım tek şey Spring'in EL çözümleyicisini ilan etmek.

<?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
Neden yerleşik ELResolver'ı belirtmemiz gerekiyor? Tasarım felsefesinin konfigürasyondan
ziyade bir uzlaşma

Ben de hiçbir var <el-resolver>benim, faces-config.xmlve mükemmel çalışıyor.
Roland

Yanıtlar:


142

Hala açıklama eklenemeyen birçok şey için kullanılacak. Örneğin, özel JSF doğrulama mesajları:

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

Küresel bir i18n paketi (böylece <f:loadBundle>her görünümde beyan etmeniz gerekmez ):

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

Açıkça desteklenen i18n yerel ayarları (böylece, bunun için bir mesaj paketi veya kaynak paketi olsa bile bildirilmemiş olanlar yok sayılacaktır):

<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>

Özel görünüm işleyicileri :

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

Faz dinleyicileri (bunun için hala ek açıklama yok):

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

(Birinin altında akım verir izah edilemedi Yönetilen fasulye DateON #{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>

Bununla birlikte, özel durum işleyicisi fabrikası gibi özel fabrikalar, (o da için fabrikalar verir FacesContext, ExternalContext, LifeCycleve size özel bir uygulama sağlayabileceği daha çok):

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

Yalnızca yaygın olarak kullanılanları adlandırmak için. Eğer varsa faces-config.xmlIDE'nizde etiket otomatik tamamlama, hepsini öğrenebilirsiniz. Yeni açıklamalar ve örtük gezinme sayesinde artık yalnızca yönetilen çekirdekler, doğrulayıcılar, dönüştürücüler, bileşenler, oluşturucular ve noktadan noktaya gezinme durumlarına ihtiyaç duyulmaz.


7
@Matt: Tüm bileşen bağlamalarına daha iyi bir bildirimsel genel bakışa sahip olmak için istek kapsamında a java.util.HashMapas #{components}depolandığı bir projem var. Örneğin binding="#{components.foo}"böylece başvurulabilir #{components.foo}fazla kendi kendini belgeleyen ve daha (nedeniyle potansiyel isim çatışmalara) daha az riskli olan binding="#{foo}"ve #{foo}.
BalusC

2
Ayrıca el-resolver'ı belirlemek için bazı ek açıklamalar arıyordum. Şimdi bu uygulama özelliklerini annotation ile belirtmenin bir yolu olmadığını düşünüyorum..right .. ??
Rup Majumder

@RupMajumder Böyle bir notu nereye koymak istersiniz, yani hangi sınıfa? Bu özellik tüm uygulamaya yayılmıştır.
2014 07:35 iozee

1
FWIW, Apache Deltaspike'ı kullanırken, JsfPhaseListener ek açıklaması, yüz-config.xml'de yapılandırmaya gerek kalmadan faz dinleyicilerini kullanmak için kullanılabilir.
jpangamarca
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.