2012-01-16 18 views
5

itibaren çalışmıyor address.jarMTU 2.0 Dönüştürücü Bir SelectOneMenu bileşeninde bir Ülke seçmek üzere özel dönüştürücü var ayrı kavanoz dosya

@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; 
}  

Ve bu xhtml olduğunu metin:

Dosya: Proje kök

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

Dönüştürücüyü "address.jar" dosyasında aldım ve adresi yazmak için sayfayı açmaya çalıştığımda, "" İfade Hatası: MyCustomCoverter adıyla nesne bulunamadı. ". Dönüştürücüyü xhtml dosyalarının bulunduğu projeye kopyaladığımda bile, o zaman iyi çalışıyor. Bunu çözmek için ne yapabilirim?

Neden ayrılmış bir jar dosyasından çalışmıyor?

Teşekkürler.

cevap

15

JSF'nin JSF ek açıklamaları olan sınıflar için JAR dosyasını otomatik olarak taramasını sağlamak için JAR dosyasına JSF 2.0 uyumlu /META-INF/faces-config.xml dosyasını sağlamanız gerekir. o dosyanın olmadan

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

, MTU performans ve böylece @FacesConverter bulundu ne de tescil edilmeyecektir kurtarmak için JAR dosyasını otomatik tarama olmayacaktır.

+0

Mükemmel, çok iyi çalışıyor. Teşekkürler!. –

+0

Rica ederim. – BalusC

+1

Bir başka önemli ayrıntı da, JAR'ın WAR (web-application) 'ın ** lib-directory **' sinde olması gerektiğidir. İçinde bir savaş başlığı olan bir EAR'ınız varsa ve dönüştürücü ile birlikte JAR sadece EAR'da değil, WAR'in lib'unda değilse, JSF çevirici bulamaz. Sorunun başka bir açıklaması için ayrıca [bu yanıt] bölümüne bakın (http://stackoverflow.com/questions/2987266/why-doesnt-jsf-2-0-ri-mojarra-scan-my-class-annotations). –

İlgili konular