I presume you modified your faces-config.xml to tell JSF to use your
component instead of HtmlDataTable? Example (note, I use facelets, and
if you don't you will also probably need to subclass the tag as well):

 <component>
   <component-type>com.somecompany.ExtendedELTable</component-type>
   <component-class>com.somecompany.ExtendedELUIData</component-class>
 </component>

custom.taglib.xml:
...
 <tag>
   <tag-name>dataTableEl</tag-name>
   <component>
     <component-type>com.somecompany.ExtendedELTable</component-type>
     <renderer-type>org.apache.myfaces.Table</renderer-type>
   </component>
 </tag>
...

Java:

public class ExtendedELUIData
 extends HtmlDataTable
{
 /**
  * @see javax.faces.component.UIData#setFirst(int)
  */
 @Override
 public void setFirst(int first)
 {
   ValueBinding vb = getValueBinding("first");
   if (vb != null)
   {
     vb.setValue(getFacesContext(), first);
     return;
   }
   else
     super.setFirst(first);
 }
}

That should be all that you need. You can add a System.out in your
constructor to make sure you component is getting created. Also check
the logs to make sure your component is getting used.

-Andrew

On 5/1/06, agdibugdi <[EMAIL PROTECTED]> wrote:

I extended HtmlDataTable with the override function for setFirst ( as
suggested), but it never got executed.

<snip>
<x:dataTable id="resourceData" var="MR"
        value="#{MR.resources}" rows="10"
        columnClasses="columnspacer_5,leftcolumn,leftcolumn"
        headerClass="sortHeader" rowClasses="oddrow, evenrow" width="100%"
        sortColumn="#{MR.sort}"
        sortAscending="#{MR.ascending}"
        preserveDataModel="true" preserveSort="true"
        first="#{MR.searchPageIndex}"
        binding="#{MR.mrDataTable}">
</snip>

Any Help ?
Is it possible to post the code ?

Thanks a bunch,

vinod
--
View this message in context: 
http://www.nabble.com/Making-sure-DataTable%27s-first-always-uses-EL-was-Re%3A-Facelets-1.0.14-causes-duplicate-IDs...-t1462743.html#a4172242
Sent from the MyFaces - Users forum at Nabble.com.


Reply via email to