2012-03-13 23 views
11

Özel bir JSF 2.0 bileşeni oluşturmak istiyorum ancak çalışmasını sağlayamıyorum. Benim bileşen böyle tanımlanır:JSF özel bileşeni bulunamadı

@FacesComponent(value = "myCustomComponent") 
public class CommaSeperatedOutput extends UIComponentBase { ... } 

Taglib şuna benzer:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<facelet-taglib 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-facelettaglibrary_2_0.xsd" version="2.0"> 
<namespace>http://www.company.com/tags</namespace> 
<tag> 
    <tag-name>custom</tag-name> 
     <component> 
     <component-type>myCustomComponent</component-type> 
     </component> 
</tag> 
</facelet-taglib> 

Benim yüzler-config şöyle görünür:

<faces-config version="2.0" 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"> 
<application> 
    <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver> 
</application> 
</faces-config> 

aşağıdaki hatayı alıyorum:

SEVERE: JSF1068: Component with componenttype myCustomComponent could not be instantiated. 
javax.faces.FacesException: Expression Error: Named Object: myCustomComponent not found. 

Önemli olup olmadığından emin değilim, ancak Spring 3.1'i JSF 2.1 ile birlikte kullanıyorum. Yani bağımlılıklar Bahar tarafından yönetiliyor.

Burada neler olduğu hakkında bir fikriniz var mı?

Çözüm: Bahar geldi kötü adam gibi

görünüyor. Ben bileşeninden ek açıklama @FacesComponent(value = "myCustomComponent") kaldırılacak ve bunun yerine bu gibi benim yüzleri-config tanımladığınız:

<component> 
    <component-type>myCustomComponent</component-type> 
    <component-class>com.company.jsf.component.CommaSeperatedOutput</component-class> 
</component> 

Şimdi çalışır. Bahar kabı kullanın yüzleriniz-config.xml dosyasını yapılandırılmış beri

+2

kullanabilirsiniz. JSF kısmı iyi görünüyor. Bu yüzden bahar [spring] etiketini ekledim, böylece siz de Spring'lerden dikkatinizi çektiniz. Özel Bileşen yerine – BalusC

+1

Kompozit Bileşen de deneyebilirsiniz. –

+0

Bu bir tedavi arkadaşı çalışır. – Makky

cevap

-1

Alternatif ve eğer bu kesinlikle bir bahar sorundur Bahar ek açıklama @Component("myCustomComponent")

+0

Hayır, bu, özel bileşenin tekil olacağı anlamına gelir. Burada istediğim şey bu değil. – flash

+1

Örneğin, kapsamı değiştirmek için ikinci bir açıklama ekleyiniz: @Scope ("request") veya @Scope ("prototype"). Ek açıklamalar için şu hile sayfasını deneyin: http://refcardz.dzone.com/refcardz/spring-annotations – 8bitjunkie