You also need to tell facelets to look at your custom-taglib:

Add to web.xml something like:

<context-param>
        <param-name>facelets.LIBRARIES</param-name>
        <param-value>/WEB-INF/custom-taglib.xml</param-value>
  </context-param

You can add more files to the param-value, just separate each file by a semicolon.

Good luck!

-Sol


On Nov 27, 2006, at 8:05 AM, Christian Wiesing wrote:

Thanks,

i created the Facelets-Taglib-File, but it still don't work. It would be great if somebody could tell me what I do wrong. See my source code below.

Thanks.

Christian

---------------------------------------
view.xhtml ----------------------------
---------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml";
     xmlns:ui="http://java.sun.com/jsf/facelets";
     xmlns:h="http://java.sun.com/jsf/html";
     xmlns:f="http://java.sun.com/jsf/core";
     xmlns:cf="http://test.com/customtags";>
       <cf:jsfhello hellomsg="Hello world."   />
                                          </html>

---------------------------------------
custom-taglib.xml ---------------------
---------------------------------------

<?xml version="1.0"?>
<!DOCTYPE facelet-taglib PUBLIC
 "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
 "http://java.sun.com/dtd/facelet-taglib_1_0.dtd";>

<facelet-taglib>
   <namespace>http://test.com/customtags</namespace>
   <tag>
       <tag-name>jsfhello</tag-name>
   <component>
           <component-type>demo.JsfHello</component-type>
       </component>      </tag>

</facelet-taglib>

---------------------------------------
faces-config --------------------------
---------------------------------------
<faces-config>

 <component>
  <component-type>demo.JsfHello</component-type>
  <component-class>demo.HelloUIComp</component-class>
 </component>


---------------------------------------
HelloUIComp.java -------------------
---------------------------------------
package demo;

import java.util.Date;
import javax.faces.component.UIComponentBase;
import javax.faces.context.FacesContext;
import java.io.IOException;
import javax.faces.context.ResponseWriter;


public class HelloUIComp extends UIComponentBase
{

 public void encodeBegin(FacesContext context) throws IOException
 {
  ResponseWriter writer = context.getResponseWriter();
  String hellomsg = (String)getAttributes().get("hellomsg");
   writer.startElement("h3", this);
  if(hellomsg != null)
    writer.writeText(hellomsg, "hellomsg");
  else
writer.writeText("Hello from a custom JSF UI Component!", null); writer.endElement("h3"); writer.startElement ("p", this);
  writer.writeText(" Today is: " + new Date(), null);
  writer.endElement("p");   }

public String getFamily()
{
 return "HelloFamily";
}
}
---------------------------------------
FacesHelloTag -----------------------
---------------------------------------

package demo;

import javax.faces.application.Application;
import javax.faces.webapp.UIComponentTag;
import javax.faces.component.UIComponent;
import javax.faces.el.ValueBinding;
import javax.faces.context.FacesContext;

public class FacesHelloTag extends UIComponentTag
{
 // Declare a bean property for the hellomsg attribute.
 public String hellomsg = null;


 // Associate the renderer and component type.
 public String getComponentType() { return "demo.JsfHello"; }
 public String getRendererType() { return null; }

 protected void setProperties(UIComponent component)
 {
   super.setProperties(component);
     // set hellomsg
   if (hellomsg != null)
   {
     if (isValueReference(hellomsg))
     {
       FacesContext context = FacesContext.getCurrentInstance();
       Application app = context.getApplication();
       ValueBinding vb = app.createValueBinding(hellomsg);
component.setValueBinding("hellomsg", vb); }
     else
       component.getAttributes().put("hellomsg", hellomsg);
   }                         }

 public void release()
 {
   super.release();
   hellomsg = null;
 }


 public void setHellomsg(String hellomsg)
 {
   this.hellomsg = hellomsg;
 }
}

Matthias Wessendorf schrieb:
Hi Christian,

take a look at [1]. That describes the steps for Tomahawk custom
components; which are also true for your custom components.

HTH,
Matthias

[1] http://wiki.apache.org/myfaces/Use_Facelets_with_Tomahawk

On 11/27/06, Christian Wiesing <[EMAIL PROTECTED]> wrote:
Hello,

how can I use custom JSF components with Facelets? I have some JSF
components which I wanna use in my Facelets-Web-App.

Is there any example or something like that?

regards,

Christian









Reply via email to