Hi,

I'm working with Geronimo 2.1 with MyFaces 1.2.2 and can't get my
custom renderer working. This is faces-config.xml file:

<?xml version="1.0" encoding="UTF-8"?>

<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">
  <render-kit>
    <renderer>
      <display-name><![CDATA[Mój własny JSF renderer]]></display-name>
      <component-family>javax.faces.Output</component-family>
      <renderer-type>javax.faces.Text</renderer-type>
      
<renderer-class>pl.jaceklaskowski.jsf.renderers.DodajTekstRenderer</renderer-class>
    </renderer>
  </render-kit>
</faces-config>

and the code of DodajTekstRenderer:

package pl.jaceklaskowski.jsf.renderers;

import java.io.IOException;
import java.util.logging.Logger;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.render.Renderer;

public class DodajTekstRenderer extends Renderer {

    Logger logger = Logger.getLogger(DodajTekstRenderer.class.getName());

    public DodajTekstRenderer() {
        super();
        logger.info("Utworzono renderer");
        System.out.println("XYZ");
    }

    @Override
    public void decode(FacesContext facesContext, UIComponent component) {
        // super.decode(facesContext, component);
        logger.info("Wywołano decode");
        System.out.println("Wywołano decode");
    }

    @Override
    public void encodeBegin(FacesContext context, UIComponent
component) throws IOException {
        // TODO Auto-generated method stub
        // super.encodeBegin(context, component);
        logger.info("Wywołano encodeBegin");
        System.out.println("Wywołano encodeBegin");
    }

    @Override
    public void encodeEnd(FacesContext facesContext, UIComponent
component) throws IOException {
        // TODO Auto-generated method stub
        // super.encodeEnd(facesContext, component);
        logger.info("Wywołano encodeEnd");
        System.out.println("Wywołano encodeEnd");
    }

}

Not much, but meant to see whether it worked or not. It did not. The
constructor was called yet no other renderer methods. The
corresponding jsf page is as follows:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<!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=UTF-8">
<title>Mój własny JSF Renderer</title>
</head>
<body>
<f:view>
  <h:outputText value="Pewien tekst"></h:outputText>
</f:view>
</body>
</html>

Does anybody know what's wrong with it? Is it possible to override
default html renderer? I already read Extending Trinidad's default
renderers [1], but since it depends on Trinindad it didn't help much.

[1] 
http://matthiaswessendorf.wordpress.com/2008/02/20/extending-trinidads-default-renderers/

Jacek

-- 
Jacek Laskowski
http://www.JacekLaskowski.pl

Reply via email to