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