1 Reply Latest reply on Jul 12, 2013 3:05 AM by lfryc

    How to extend rich:datatable with CDK

    zsv

      Hello. I want to extend rich:datatable with CDK (ver 4.3.1.Final)

       

      I created maven project using cdk wiki and created 2 files: component and package-info.

      Project compiled, but if I include my custom datatable in page nothing displayed. No errors, warning, just nothing.

       

      How can I extend rich datatable with cdk?

       

      AbstractDataTableExt.java

      package ru.zpage.projects.richfaces.datatable.component;
      
      import java.io.Serializable;
      
      import javax.faces.component.UIComponent;
      
      import org.richfaces.cdk.annotations.*;
      import org.richfaces.component.AbstractDataTable;
      import org.richfaces.component.UIDataTableBase;
      
      @JsfComponent(
              type = "ru.zpage.projects.richfaces.datatable.DataTableExt", 
              family = AbstractDataTable.COMPONENT_FAMILY,
              renderer = @JsfRenderer(type = "org.richfaces.DataTableRenderer"), 
              tag = @Tag(name = "dataTable", 
              handler = "org.richfaces.taglib.DataTableHandler", 
              type = TagType.Facelets), attributes = {
              "style-prop.xml", "styleClass-prop.xml", "iteration-props.xml", "rows-prop.xml", "sequence-props.xml",
              "events-row-props.xml" })
      public abstract class AbstractDataTableExt extends UIDataTableBase implements Serializable{
      
          public static final String CAPTION_FACET_NAME = "caption";
          
      
          @Attribute
          public abstract String getCaptionClass();
          
          @Attribute
          public abstract String getStyleClass();
      
          @Facet
          public abstract UIComponent getCaption();
      
      }
      

       

       

      package-info.java

      @TagLibrary(uri="http://zpage.ru/richfaces",shortName="zpageLib")
      package ru.zpage.projects.richfaces.datatable.component;
      import org.richfaces.cdk.annotations.TagLibrary;
      
        • 1. Re: How to extend rich:datatable with CDK
          lfryc

          Hey Sergey,

           

          when I need to extend rich:dataTable component including renderer logic, I would use copy and rename all the relevant sources:

           

          • JSF component sources
            • component (AbstractDataTable) -> AbstractDataTableExt
            • renderer (DataTableRenderer) -> DataTableExtRenderer
            • optionally tag handler (DataTableHandler)
          • associated resources
            • datatable.css
            • datatable.js

           

          Just remember to rewrite all the associated names - type, family, renderer-type.

           

          A good approach is to always check whether everything is fine in generated faces-config.xml and *.taglib.xml.

           

          Here is a sample of dataTable extension projects with demo:

           

          https://github.com/richfaces/richfaces-sandbox/tree/datatable-extension/datatable-extension