Own JSF Component Hello World
marcusdidiusfalco Oct 1, 2008 9:47 AMHello,
I am trying to learn how to build my own components with JSF. However I cannot get the simplest example to run :-(
Using JBoss 4.2.2.GA
package simple; import java.io.IOException; import javax.faces.component.UIComponentBase; import javax.faces.component.UIOutput; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; public class UISimple extends UIComponentBase { @Override public void encodeBegin(FacesContext context) throws IOException { } @Override public void encodeEnd(FacesContext context) throws IOException { ResponseWriter responseWriter = context.getResponseWriter(); responseWriter.startElement("h1", null); responseWriter.writeText("foobar", null); responseWriter.endElement("h1"); responseWriter.flush(); } @Override public String getFamily() { // TODO Auto-generated method stub return null; } @Override public void decode(FacesContext context) { return; } }
package simple; import javax.faces.webapp.UIComponentELTag; public class SimpleTag extends UIComponentELTag { @Override public String getComponentType() { return "simple.Simple"; } @Override public String getRendererType() { return null; } }
WEB-INF/simple.tld
<?xml version="1.0" encoding="UTF-8"?> <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-jsptaglibrary_2_1.xsd" version="2.1"> <tlib-version>1.1</tlib-version> <short-name>spinner</short-name> <uri>http://corejsf.com/simple</uri> <tag> <name>simple</name> <tag-class>simple.SimpleTag</tag-class> <body-content>scriptless</body-content> </tag> </taglib>
WEB-INF/faces-config.xml
<?xml version="1.0"?> <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_1_2.xsd" version="1.2"> <component> <component-type>simple.Simple</component-type> <component-class>simple.UISimple</component-class> </component> </faces-config>
WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>OwnComponent</display-name> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.faces</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.faces</welcome-file> </welcome-file-list> </web-app>
The Jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib uri="http://corejsf.com/simple" prefix="s" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Simple</title> </head> <body> test <s:simple /> </body> </html>
Except for "test" nothing is rendered.
What is my mistake?
And in a related issue:
How do I turn on debug Mode for JSF?
I never see anything in the log files relating to JSF.
Thanks for any help,
Hans