Hello Aurel,

You specified the JSP tag as your renderer class -- that's why you're
getting a ClassCastException. Your render kit definition should be like
this:

       <renderer>
               <component-family>javax.faces.Command</component-family>

>                <renderer-type>rendersvg.Button</renderer-type>
>                <renderer-class>rendersvg.ButtonRenderer</renderer-class>
>        </renderer>


Also, don't forget to add your button renderer tag to the JSP tag library.

If you want to use the standard UICommand component, the renderer type
should be javax.faces.Button.
---
Kito D. Mann -- Author, JavaServer Faces in Action
http://twitter.com/kito99  http://twitter.com/jsfcentral
http://www.virtua.com - JSF/Java EE consulting, training, and mentoring
http://www.JSFCentral.com - JavaServer Faces FAQ, news, and info
+1 203-404-4848 x3

Public JSF Course in NYC (April 21st-24th):
http://www.regonline.com/jsf-course



On Fri, Apr 24, 2009 at 10:27 AM, <[email protected]> wrote:

> Hi,
>
> I want to built a custom render kit for SVG. I put in faces-config.xml the
> following
> <render-kit>
>        <render-kit-id>SVG</render-kit-id>
>        <renderer>
>                <component-family>javax.faces.Command</component-family>
>                <renderer-type>rendersvg.Button</renderer-type>
>                <renderer-class>rendersvg.CommandButtonTag</renderer-class>
>        </renderer>
>        others renders
>        ....
> </render-kit>
>
> I use this renderkit in the following jsp:
>
> <?xml version="1.0"?>
>
> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "
> http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
>
> <%@ page contentType="image/svg+xml"%>
> <%@ taglib uri="http://java.sun.com/jsf/svg"; prefix="g" %>
> <%@ taglib uri="http://java.sun.com/jsf/core"; prefix="f" %>
>
> <svg xmlns="http://www.w3.org/2000/svg";
>     xmlns:xlink="http://www.w3.org/1999/xlink";>
>    <style type="text/css">
>      rect:hover {fill-opacity:0.3;}
>    </style>
>
>    <f:view renderKitId="SVG" >
>        <g:form id="form">
>           <g:outputText x="100" y="50" textAnchor="middle" value=".xxx..."
>                         style="stroke:black; stroke-width:0.5; fill:none;
> font-size:32pt;" />
> ....................
>        </g:form>
>    </f:view>
> </svg>
>
> I wrote the renderers (this is one example)
> public class ButtonRenderer extends Renderer {
> ..........
>    public void decode(FacesContext context, UIComponent component) {
>   ............
>    }
>    public void encodeBegin(FacesContext context, UIComponent component)
>  throws IOException {
> ..........
>    }
>
>    public void encodeEnd(FacesContext context, UIComponent component)
> ................
>    }
> }
>
> I wrote the tag clases
> public final class CommandButtonTag extends UIComponentELTag {
> ..........
>    public String getRendererType() {
>        return "rendersvg.Button";
>    }
>
>    public String getComponentType() {
>        return "javax.faces.Command";
>    }
> ..........
> }
>
> But when I start tomcat I get
> Apr 24, 2009 4:38:21 PM org.apache.myfaces.config.FacesConfigurator
> configureRenderKits
> SEVERE: failed to configure rendersvg.CommandButtonTag
> java.lang.ClassCastException: rendersvg.CommandButtonTag
>        at
> org.apache.myfaces.config.FacesConfigurator.configureRenderKits(FacesConfigurator.java:859)
>        at
> org.apache.myfaces.config.FacesConfigurator.configure(FacesConfigurator.java:278)
>        at
> org.apache.myfaces.webapp.AbstractFacesInitializer.buildConfiguration(AbstractFacesInitializer.java:131)
>        at
> org.apache.myfaces.webapp.Jsp21FacesInitializer.initContainerIntegration(Jsp21FacesInitializer.java:64)
>        at
> org.apache.myfaces.webapp.AbstractFacesInitializer.initFaces(AbstractFacesInitializer.java:83)
>        at
> org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized(StartupServletContextListener.java:72)
>        at
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
>        at
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
>        at
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
>        at
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>        at
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
>        at
> org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:926)
>        at
> org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:889)
>        at
> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
>        at
> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
>        at
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
>        at
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
>        at
> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>        at
> org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>        at
> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>        at
> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>        at
> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>        at
> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>        at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:585)
>        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
>
> What do you think I am missing?
> Thanks,
> Aurel
>
>
>

Reply via email to