Voglio creare un componente personalizzato JSF 2.0, ma non riesco a farlo funzionare. La mia componente è definita in questo modo:componente personalizzato JSF non viene trovato
@FacesComponent(value = "myCustomComponent")
public class CommaSeperatedOutput extends UIComponentBase { ... }
Il taglib assomiglia a questo:
<?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>
mio faces-config si presenta così:
<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>
ottengo il seguente errore:
SEVERE: JSF1068: Component with componenttype myCustomComponent could not be instantiated.
javax.faces.FacesException: Expression Error: Named Object: myCustomComponent not found.
Non sono sicuro se è importante, ma sto usando Spring 3.1 insieme a JSF 2.1 qui. Quindi le dipendenze sono gestite da Spring.
Qualsiasi idea di quello che sta succedendo qui?
Soluzione:
Sembra come La primavera è il cattivo qui. Ho rimosso l'annotazione @FacesComponent(value = "myCustomComponent")
dal componente e definiti invece nel mio faces-config in questo modo:
<component>
<component-type>myCustomComponent</component-type>
<component-class>com.company.jsf.component.CommaSeperatedOutput</component-class>
</component>
Ora funziona.
Questo è sicuramente un problema di primavera. La parte JSF sembra a posto. Così ho aggiunto il tag '[spring]' in modo da attirare l'attenzione anche dei ragazzi di Spring. – BalusC
invece di componente personalizzato si può anche dare Composite Component una prova. –
Questo funziona come compagno di trattamento. – Makky