You are right. There is something broken here.

The encodeInnerHTML method should work just like the following code:

        int first = getFirst();
        int rows = getRows();
        int last;
        if (rows == 0)
        {
            last = getRowCount();
        }
        else
        {
            last = first + rows;
        }
        for (int rowIndex = first; last==-1 || rowIndex < last; rowIndex++)
        {
            setRowIndex(rowIndex);

            //scrolled past the last row
            if (!isRowAvailable())
                break;

            for (Iterator it = getChildren().iterator(); it.hasNext();)
            {
                UIComponent child = (UIComponent) it.next();
                if (child instanceof UIColumn)
                {
                    if (!child.isRendered())
                    {
                        //Column is not visible
                        continue;
                    }
                    for (Iterator columnChildIter = child.getChildren()
                            .iterator(); columnChildIter.hasNext();)
                    {
                        UIComponent columnChild = (UIComponent) columnChildIter
                                .next();
                        process(context, columnChild, processAction);
                    }
                }
            }
        }

regards,

Martin
On 1/1/06, Mike <[EMAIL PROTECTED]> wrote:
>  Hi Pichai,
>
>  I had tried to use a resultset for a Data Table too, but was never able to
> get it to work. Once I switched to another data model, it worked instantly.
> The Apache site still says that the ResultSet isn't yet supported.
>
>  From:
> http://myfaces.apache.org/tomahawk/extDataTable.html:
>
>  What data types are supported?
>  To be able to save the state of the DataModel the row objects must be
> serializable. All standard DataModel types are supported, except ResultSet,
> which will follow in one of the next releases,
>
>  HTH
>
>      Mike
>
>
>
>
>  Pichai Ongvasith wrote:
> Hello,
>
>  I tried to use a ResultSetDataModel as the data model for <t:dataTable>,
> with myfaces1.1.1. It turns out that the result never shows up in the table.
>  My guess is that this might be related to Jira issue MYFACES-278.
>
>  Looking into the source code, I guess
> HtmlTableRendererBase.encodeInnerHtml is doing the job to
> render the result set.
>  this is the excerpt of relevant code.
>         int first = uiData.getFirst();
>         int rows = uiData.getRows();
>         int rowCount = uiData.getRowCount();
>         if (rows <= 0)
>         {
>             rows = rowCount - first;
>         }
>         int last = first + rows;
>         if (last > rowCount)
>             last = rowCount;
>
>         for (int i = first; i < last; i++)
>         {                       // render
>         }
>
>  If that's true, the method might be mishandling the uiData.getRowCount.
>  The implementation of ResultSetDataModel.getRowCount in myfaces1.1.1 always
> return -1, which is valid when the row count is unknown at the time. So
> before the rendering loop, last is always -1, and nothing would be rendered.
>
>  Or am I missing something here?
>
>  pichai
>
>
>
>
>


--

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces

Reply via email to