2012-01-16 10 views
5

से काम नहीं कर रहा मैं एक SelectOneMenu घटक में एक देश का चयन करने के लिए एक कस्टम कनवर्टर है:JSF 2.0 कनवर्टर अलग जार फ़ाइल

फ़ाइल: address.jar

@FacesConverter(value="CountryConverter", forClass=Country.class) 
public class CountryConverter implements Converter { 

private CountryBean countryBean = CountryBean.getCountryService(); 

@Override 
public Object getAsObject(FacesContext context, UIComponent component, String value) { 
    return countryBean.find(value); 
} 

@Override 
public String getAsString(FacesContext context, UIComponent component, Object value) { 
    if (value != null) 
     return ((Country)value).getcc_fips(); 
    else 
     return null; 
}  

और यह एक्सएचटीएमएल है पाठ:

फ़ाइल: परियोजना जड़

<h:selectOneMenu id="country" value="#{cc.attrs.addrEntity.country}"> 
    <f:selectItem itemLabel="Please select one..." 
      noSelectionOption="true" /> 
    <f:selectItems value="#{cc.attrs.addrBean.countries}" 
        var="model" 
        itemLabel="#{model.name}" 
        itemValue="#{model}" 
        noSelectionValue="&#8220;no selection&#8221;"/> 
    <f:converter ConverterId="CountryConverter"/>   
</h:selectOneMenu> 

मेरे पास एक फ़ाइल में कनवर्टर है "address.jar" और जब मैं पता लिखने के लिए पेज खोलने का प्रयास करता हूं, तो यह कहता है "अभिव्यक्ति त्रुटि: नाम MyCustomCoverter नाम से ऑब्जेक्ट नहीं मिला।"। यहां तक ​​कि सोचा कि जब मैं कनवर्टर को उस परियोजना में कॉपी करता हूं जहां xhtml फ़ाइलें हैं, तो यह ठीक काम करता है। इसे हल करने के लिए मैं क्या कर सकता हूं?

यह अलग जार फ़ाइल से क्यों काम नहीं करता है?

धन्यवाद।

उत्तर

15

जेएसएफ एनएसओशन के साथ कक्षाओं के लिए जेएआर फ़ाइल को स्वतः स्कैन करने के लिए जेएसएफ प्राप्त करने के लिए आपको जेएआर फ़ाइल में जेएसएफ 2.0 संगत /META-INF/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"> 
</faces-config> 

कि फ़ाइल के बिना, JSF नहीं प्रदर्शन और इस तरह अपने @FacesConverter नहीं मिलेगा और न ही पंजीकृत बचाने के लिए JAR फ़ाइल ऑटो स्कैन करेगा।

+0

बिल्कुल सही, यह बहुत अच्छी तरह से काम करता है। धन्यवाद!। –

+0

आपका स्वागत है। – BalusC

+1

एक अतिरिक्त लेकिन महत्वपूर्ण जानकारी यह है कि JAR WAR (वेब-एप्लिकेशन) की ** lib-directory ** में होना चाहिए। यदि आपके पास एक युद्ध के साथ एक ईएआर है और कनवर्टर के साथ जेएआर केवल ईएआर में है लेकिन WAR के lib में नहीं है, तो जेएसएफ कनवर्टर नहीं मिलेगा। समस्या के एक और विस्तृत विवरण के लिए यह भी देखें [यह उत्तर] (http://stackoverflow.com/questions/2987266/why-doesnt-jsf-2-0-ri-mojarra-scan-my-class-annotations)। –