Listing 2. The standard renderer kit is mandatory, but you can provide other renderer kits to offer an alternate client-side representation or language. The renderer you implement chooses the type of CSS to be emitted in the HTML page by checking the link property of the component.

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.render.Renderer;
public class CSSRenderer extends Renderer {
public void encodeEnd(FacesContext context,
                                                                                        UIComponent component)
        throws IOException {
                super.encodeEnd(context, component);
                if (component instanceof CSSComponent) {
                        CSSComponent cssComponent  =
                                (CSSComponent) component;
                        String css = (String)cssComponent.getValue();
                        boolean isLink = cssComponent.isLink();
                        if (css != null) 
                                if (isLink)  
                                context.getResponseWriter().write(
                                "<link type='text/css' rel='stylesheet' 
                                href='" + css + "'/>");
                        else 
                                context.getResponseWriter().write(
                                        "<style>\n" + css + "\n<style/>\n"); 
                }
        }
}