Hi Henry, I think you have a mistake in the config (like renderer-type). here is a *simple* extended version of MessageRenderer.
Java class: package net.wessendorf.trinidad; import java.io.IOException; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import org.apache.myfaces.trinidad.bean.FacesBean; import org.apache.myfaces.trinidad.component.core.output.CoreMessage; import org.apache.myfaces.trinidad.context.RenderingContext; import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.MessageRenderer; public class CustomMessageRenderer extends MessageRenderer { public CustomMessageRenderer() { this(CoreMessage.TYPE); } protected CustomMessageRenderer(FacesBean.Type type) { super(type); } @Override protected void encodeAll( FacesContext context, RenderingContext rc, UIComponent component, FacesBean bean) throws IOException { ResponseWriter writer = context.getResponseWriter(); writer.startElement("div", null); writer.write("BLAH"); writer.endElement("div"); super.encodeAll(context, rc, component, bean); } } required xml: <render-kit> <render-kit-id>org.apache.myfaces.trinidadinternal.core</render-kit-id> <renderer> <component-family> org.apache.myfaces.trinidad.Message </component-family> <renderer-type> org.apache.myfaces.trinidad.Message </renderer-type> <renderer-class> net.wessendorf.trinidad.CustomMessageRenderer </renderer-class> </renderer> </render-kit> (note that now <tr:message /> is using this custom renderer. -Matthias On Feb 20, 2008 12:26 AM, Henry Eduardo Iguaro <[EMAIL PROTECTED]> wrote: > hi, i'm creating a custom renderer for a > org.apache.myfaces.trinidad.component.core.output.CoreMessage component > (aka, a <tr:message /> component), the custom renderer uses javascript > to simulate a small balloon message box. After searching in the source > code, i've found that the default renderer for the CoreMessage is the > org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.MessageRenderer, so > i created a copy of it and renamed to my renderer class name, this way i > could test the tag handling before plugin mine own renderer > > This is the code that registers the renderer in my faces-config.xml > file. > > <render-kit> > <render-kit-class> > org.apache.myfaces.trinidadinternal.renderkit.core.CoreRenderKit > </render-kit-class> > <renderer> > <component-family> > org.apache.myfaces.trinidad.Message > </component-family> > <renderer-type> > org.apache.myfaces.trinidad.CoreMessage > </renderer-type> > <renderer-class> > gob.sudeban.util.jsf.custom.renderers.MessageBalloonRenderer > </renderer-class> > </renderer> > </render-kit> > > This is the component tag from my tld file: > <tag> > <name>balloon-message</name> > <tag-class>gob.sudeban.util.jsf.custom.tags.BalloonMessageTag</tag-class> > ... > > The same atributes for the message tag from the tr.tld file in > trinidad-impl-1.0.6.jar > ... > </tag> > > > The class gob.sudeban.util.jsf.custom.tags.BalloonMessageTag is also a > renamed copy of > org.apache.myfaces.trinidadinternal.taglib.core.output.CoreMessageTag > > This is the jsp file i use to test the component: > > <?xml version="1.0" encoding="UTF-8" ?> > <%@ page language="java" contentType="text/html; charset=UTF-8" > pageEncoding="UTF-8"%> > <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> > <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> > <%@ taglib uri="http://myfaces.apache.org/trinidad" prefix="tr" %> > <%@ taglib uri="http://myfaces.apache.org/trinidad/html" prefix="trh" %> > <%@ taglib uri="http://sudeban.gob.ve/jsf/component/tags" > prefix="sudeban" %> > > <f:view> > > <trh:head> > </trh:head> > > <trh:body> > <tr:form> > <tr:panelFormLayout > > <sudeban:balloon-message message="This is a > message" /> > </tr:panelFormLayout> > </tr:form> > </trh:body> > > When i test the component i get the following: > > (HtmlRenderKitImpl.java:79) Unsupported component-family/renderer-type: > org.apache.myfaces.trinidad.Message/gob.sudeban.util.jsf.custom.renderers.MessageBalloonRenderer > 19-feb-2008 16:30:22 > org.apache.myfaces.trinidadinternal.renderkit.RenderKitBase getRenderer > WARNING: Renderer > 'gob.sudeban.util.jsf.custom.renderers.MessageBalloonRenderer' not found > for component family 'org.apache.myfaces.trinidad.Message' > 19-feb-2008 16:30:22 > org.apache.myfaces.trinidad.component.UIXComponentBase _getRendererImpl > WARNING: Could not find renderer for CoreMessage[UIXFacesBeanImpl, > id=_idJsp4] rendererType = > gob.sudeban.util.jsf.custom.renderers.MessageBalloonRenderer > (UIComponentTag.java:500) Exited encodeEnd for client-Id: _idJsp1 > 19-feb-2008 16:30:22 > org.apache.myfaces.trinidadinternal.renderkit.core.CoreRenderKit > encodeFinally > WARNING: No RenderingContext available > 19-feb-2008 16:30:22 > org.apache.myfaces.trinidadinternal.renderkit.core.CoreRenderKit > encodeFinally > WARNING: No RenderingContext available > > And anything get rendered... > > What am i doing wrong? It's possible to register another render for a > core component like this? > > Any help would be appreciated > > (PS: Please excuse my english) > > Henry Iguaro > -- Matthias Wessendorf further stuff: blog: http://matthiaswessendorf.wordpress.com/ sessions: http://www.slideshare.net/mwessendorf mail: matzew-at-apache-dot-org