JSF 2 में फेस-config.xml का उपयोग क्या है?


89

जेएसएफ एनोटेशन के लिए 2 बड़े समर्थन के बाद, मैं सोच रहा हूं कि मैं इसके लिए क्या उपयोग करूंगा faces-config.xml। अब इसका क्या महत्व है?

दूसरे शब्दों में, क्या विन्यास हैं जो केवल faces-config.xmlएनोटेशन के माध्यम से हो सकते हैं और नहीं?

अभी मैं इसके लिए जो भी इस्तेमाल कर रहा हूं, वह स्प्रिंग के ईएल रिसॉल्वर की घोषणा करना है।

<?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 को निर्दिष्ट करने की आवश्यकता क्यों है? मुझे लगा कि डिजाइन दर्शन विन्यास पर अधिवेशन है ...
मास्टरएक्सिलो

मेरे पास भी नहीं <el-resolver>है faces-config.xmlऔर यह पूरी तरह से काम कर रहा है।
रोलैंड

जवाबों:


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>

प्रबंधित बीन्स जिन्हें एनोटेट नहीं किया जा सकता है (नीचे वाला चालू देता 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>

जैसे कस्टम अपवाद संचालक कारखाने के रूप में कस्टम कारखानों, (यह भी के लिए कारखानों की अनुमति देता है FacesContext, ExternalContext, LifeCycleऔर कई और अधिक ताकि आप अपने कस्टम कार्यान्वयन प्रदान कर सकते हैं):

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

केवल आमतौर पर इस्तेमाल होने वाले लोगों के नाम के लिए। यदि आपके पास faces-config.xmlअपने IDE में स्वत: पूर्णता टैग है, तो आप उन्हें सभी का पता लगा सकते हैं। केवल प्रबंधित बीन्स, सत्यापनकर्ता, कन्वर्टर्स, घटक, रेंडरर्स और पॉइंट-टू-पॉइंट नेविगेशन मामलों को अब नए एनोटेशन और निहित नेविगेशन के लिए धन्यवाद की आवश्यकता नहीं है।


7
@ मैट: मेरे पास एक ऐसा प्रोजेक्ट है जिसमें सभी घटक बाइंडिंग का एक बेहतर घोषणात्मक अवलोकन करने के लिए अनुरोध गुंजाइश में संग्रहीत किया java.util.HashMapजाता #{components}है। उदाहरण के लिए binding="#{components.foo}"इतना है कि यह रूप में संदर्भित किया जा सकता #{components.foo}है जो अधिक आत्म दस्तावेजीकरण और कम जोखिम (संभावित नाम संघर्ष के कारण) से binding="#{foo}"और #{foo}
बालुस सी.पी.

2
मैं एल-रिसॉल्वर निर्दिष्ट करने के लिए कुछ एनोटेशन की भी तलाश कर रहा था। अब मुझे लगता है कि एनोटेशन के माध्यम से इन आवेदन गुणों को निर्दिष्ट करने का कोई तरीका नहीं है .. ठीक है .. ??
रूप मजुमदार

@RupMajumder आप इस तरह की टिप्पणी कहां करना चाहते हैं, मेरा मतलब किस वर्ग पर है? यह संपत्ति पूरे आवेदन पर फैली हुई है।
iozee

1
एफडब्ल्यूआईडब्ल्यू, अपाचे डेल्टासाइक का उपयोग करते समय, JsfPhaseListener एनोटेशन का उपयोग चरण श्रोताओं का उपयोग करने के लिए किया जा सकता है, उन्हें फेस-config.xml में कॉन्फ़िगर करने की आवश्यकता के बिना।
२२:३ca पर jpangamarca
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.