Setelah JSF 2 sangat mendukung anotasi, saya bertanya-tanya untuk apa saya akan menggunakannya faces-config.xml
. Apa pentingnya sekarang?
Dengan kata lain, konfigurasi apa yang hanya dapat dilakukan melalui faces-config.xml
dan tidak melalui anotasi?
Saat ini semua yang saya gunakan untuk menyatakan resolver EL Spring.
<?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>
jsf
jsf-2
faces-config
Mahmoud Saleh
sumber
sumber
<el-resolver>
di sayafaces-config.xml
dan itu bekerja dengan sempurna.Jawaban:
Ini masih digunakan untuk banyak hal yang tidak dapat dijelaskan. Misalnya pesan validasi JSF khusus:
<application> <message-bundle>com.example.i18n.messages</message-bundle> </application>
Paket i18n global (sehingga Anda tidak perlu mendeklarasikan
<f:loadBundle>
di setiap tampilan):<application> <resource-bundle> <base-name>com.example.i18n.Text</base-name> <var>text</var> </resource-bundle> </application>
Lokal i18n yang didukung secara eksplisit (sehingga yang tidak dideklarasikan akan diabaikan meskipun ada bundel pesan atau bundel sumber daya untuk itu):
<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>
Penangan tampilan kustom :
<application> <view-handler>com.example.SomeViewHandler</view-handler> </application>
Pendengar fase (masih belum ada anotasi untuk itu):
<lifecycle> <phase-listener>com.example.SomePhaseListener</phase-listener> </lifecycle>
Dikelola kacang yang tidak dapat dijelaskan (di bawah satu memberikan arus
Date
pada#{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>
Kustom pabrik, seperti pabrik pengecualian kustom handler (juga memungkinkan pabrik untuk
FacesContext
,ExternalContext
,LifeCycle
dan masih banyak lagi sehingga Anda dapat menyediakan implementasi kustom Anda):<factory> <exception-handler-factory>com.example.SomeExceptionHandlerFactory</exception-handler-factory> </factory>
Untuk menyebutkan hanya yang biasa digunakan. Jika Anda memiliki
faces-config.xml
pelengkapan otomatis tag di IDE Anda, Anda dapat menemukan semuanya. Hanya kacang yang dikelola, validator, konverter, komponen, penyaji, dan kasus navigasi point-to-point yang tidak diperlukan lagi berkat anotasi baru dan navigasi implisit.sumber
java.util.HashMap
as#{components}
disimpan dalam cakupan permintaan untuk memiliki gambaran umum deklaratif yang lebih baik dari semua pengikatan komponen. Misalnyabinding="#{components.foo}"
agar dapat dirujuk sebagai#{components.foo}
mana yang lebih mendokumentasikan diri sendiri dan tidak terlalu berisiko (karena potensi bentrokan nama) daripadabinding="#{foo}"
dan#{foo}
.