Estoy buscando anular la funcionalidad de algunos componentes de Richfaces (principalmente la tabla de datos extendidos).Extendiendo los componentes de Richfaces
¿Podría alguien proporcionar un ejemplo completo de cualquier componente que extendieron, con ejemplos de código?
Sé que el hilo a continuación describe cómo hacerlo, pero un ejemplo de código sería muy beneficioso.
Extend Richfaces components - for example customize Datatable component for specific implementation
Ok ..... he estado pesca de arrastre de la Internet y no parece ser un montón de claro paso a paso simples ejemplos de esto. Parece ser el caso aquí también :(
he logrado reunir los siguientes hasta el momento:
He creado un procesador ExtendedDataTableRenderer encargo de la siguiente manera:
package com.test;
import java.io.IOException;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import org.richfaces.renderkit.html.ExtendedDataTableRenderer;
public class HtmlExtendedDataTableRendered extends ExtendedDataTableRenderer
{
@Override
public void encodeBegin(FacesContext context, UIComponent component) throws IOException
{
System.out.println("------- in HtmlExtendedDataTableRendered init() -----");
// TODO Auto-generated method stub
super.encodeBegin(context, component);
}
}
y ha añadido la siguiente a mi faces-config.xml de la siguiente manera:
<render-kit>
<renderer>
<component-family>org.richfaces.ExtendedDataTable</component-family>
<renderer-type>org.richfaces.ExtendedDataTableRenderer</renderer-type>
<renderer-class>com.test.HtmlExtendedDataTableRendered</renderer-class>
</renderer>
</render-kit>
Cuando llegué a una página que tiene un componente entendedDataTable esto parece estar funcionando (se prining el código de prueba a la consola).
Ahora también extendió la clase HtmlExtendedDataTable de la siguiente manera:
package com.test;
import java.io.IOException;
import javax.faces.context.FacesContext;
import org.richfaces.component.html.HtmlExtendedDataTable;
public class customExtendedDataTable extends HtmlExtendedDataTable {
/*
* The renderer type for this component.
*/
public static final String RENDERER_TYPE = "com.test.HtmlExtendedDataTableRendered";
public customExtendedDataTable() {
System.out.println("------- in customExtendedDataTable init() -----");
setRendererType(RENDERER_TYPE);
}
@Override
public String getFamily() {
return customExtendedDataTable.RENDERER_TYPE;
}
@Override
public boolean groupIsExpanded(int index)
{
System.out.println("------- in groupIsExpanded -----");
// TODO Auto-generated method stub
return super.groupIsExpanded(1);
}
@Override
public void encodeBegin(FacesContext context) throws IOException
{
System.out.println("------- in encodeBegin -----");
// TODO Auto-generated method stub
super.encodeBegin(context);
}
}
Nada se ha impreso a la consola desde dentro de esta clase cuando entro en una página que tiene el componente extendedDataTable.
¿Alguien podría ayudarme por qué esto no funciona, por favor?
Gracias
Gracias BalsusC. Probablemente tengo suficiente allí para que funcione. Haré esos cambios y miraré los enlaces taglib. Quizás regrese con más preguntas en pocos días cuando lo encuentre;) –