Quiero crear un componente personalizado JSF 2.0 pero no puedo hacerlo funcionar. Mi componente se define así:El componente personalizado JSF no se encuentra
@FacesComponent(value = "myCustomComponent")
public class CommaSeperatedOutput extends UIComponentBase { ... }
El taglib se ve así:
<?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>
Mi caras-config se ve así:
<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>
me sale el siguiente error:
SEVERE: JSF1068: Component with componenttype myCustomComponent could not be instantiated.
javax.faces.FacesException: Expression Error: Named Object: myCustomComponent not found.
No estoy seguro de si es importante, pero estoy usando Spring 3.1 junto con JSF 2.1 aquí. Entonces, las dependencias son administradas por Spring.
¿Alguna idea de lo que está sucediendo aquí?
Solución:
parece que la primavera es el malo aquí. He quitado la anotación @FacesComponent(value = "myCustomComponent")
del componente y se define su lugar en mi caras-config como esto:
<component>
<component-type>myCustomComponent</component-type>
<component-class>com.company.jsf.component.CommaSeperatedOutput</component-class>
</component>
ahora funciona.
Este es sin duda un problema primavera. La parte JSF se ve bien. Así que agregué la etiqueta '[spring]' para que también recibas atención de los chicos de Spring. – BalusC
en lugar de Componente personalizado también puede probar Composite Component. –
Esto funciona como un compañero de tratamiento. – Makky