incubator-adffaces-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Adam Winer" <awi...@gmail.com>
Subject Re: Dynamic tr:table(rows) IndexOutOfBoundsException
Date Sun, 26 Nov 2006 23:34:15 GMT
Could you log a JIRA issue on this?  This really has to get fixed...  A
test case (the original example that was blowing up) would be
essential too.

Thanks,
Adam Winer


On 11/23/06, Sabina Albu <sabina.albu@gmail.com> wrote:
>
> Hi,
>
> Thank you for the tip.
>
> I completely removed the facelets and I don't get the exception anymore.
>
> Also if I kept the facelets but I created one very long row, like
> <tr:column><f:facet name="header"><tr:outputText value="${person.firstname
> }"/></facet></tr:column>
> things worked out OK.
>
>
>
> On 11/22/06, Jeantine Mankelow <jeantine@corp.peace.com> wrote:
> >
> > We've had this error on our project.  We are using facelets and
> > eventually we tracked it down to trailing white space within our xhtml
> > file.
> >
> >
> > Sabina Albu wrote:
> > > Hi,
> > >
> > > I am getting an java.lang.IndexOutOfBoundsException when I change the
> > > content/rows
> > > in the underlying model/list of a Trinidad table.
> > >
> > > The number of rows in my table changes upon clicking on a button:
> > > In XHTML:
> > > ...
> > > <tr:commandButton text="Reload" action="#{personBean.reloadTable}"/>
> > > ...
> > > <tr:table id="tbl" value="#{personBean.persons}" var="person">
> > >  <tr:column>
> > >        ...
> > >        <tr:outputText value="${person.firstname}"/>
> > >  </tr:column>
> > >    ...
> > > </tr:table>
> > >
> > > In backing bean:
> > > private java.util.List<Person> persons;
> > > ...
> > > public void reloadTable() {
> > >   persons = null;
> > >   persons = getPersons();//DB call to get new List of persons
> > > }
> > >
> > > In the initial load getPersons() returns 1 row. After a reload I get 3
> > > rows
> > > and that's when I get the exception:
> > >
> > > java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
> > >        at java.util.ArrayList.RangeCheck(ArrayList.java:547)
> > >        at java.util.ArrayList.get(ArrayList.java:322)
> > >        at
> > >
> org.apache.myfaces.trinidad.component.StampState.restoreChildStampState(
> > > StampState.java:152)
> > >        at
> > > org.apache.myfaces.trinidad.component.UIXTable.restoreStampState(
> > > UIXTable.java:320)
> > >        at
> > > org.apache.myfaces.trinidad.component.UIXCollection._restoreStampState
> (
> > > UIXCollection.java :1088)
> > >        at
> > > org.apache.myfaces.trinidad.component.UIXCollection.postRowDataChange(
> > > UIXCollection.java:690)
> > >        at
> > > org.apache.myfaces.trinidad.component.UIXCollection.setRowIndex(
> > > UIXCollection.java:406)
> > >        at
> org.apache.myfaces.trinidad.component.UIXTable._processStamps(
> > > UIXTable.java:395)
> > >        at
> > >
> org.apache.myfaces.trinidad.component.UIXTable.processFacetsAndChildren(
> > > UIXTable.java:268)
> > >        at
> > > org.apache.myfaces.trinidad.component.UIXCollection.decodeChildrenImpl(
> > > UIXCollection.java:159)
> > >        at
> > > org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(
> > > UIXComponentBase.java:874)
> > >        at
> > > org.apache.myfaces.trinidad.component.UIXCollection.processDecodes(
> > > UIXCollection.java :153)
> > >        at
> > >
> >
> org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(
> > >
> > > UIXComponentBase.java:889)
> > >        at
> > > org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(
> > > UIXComponentBase.java :874)
> > >        at org.apache.myfaces.trinidad.component.UIXForm.processDecodes
> (
> > > UIXForm.java:60)
> > >        at
> > >
> >
> org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(
> > >
> > > UIXComponentBase.java:889)
> > >        at
> > > org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(
> > > UIXComponentBase.java:874)
> > >        at
> > > org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(
> > > UIXComponentBase.java:725)
> > >        at
> > >
> >
> org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildrenImpl(
> > >
> > > UIXComponentBase.java:889)
> > >        at
> > > org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren(
> > > UIXComponentBase.java:874)
> > >        at
> > > org.apache.myfaces.trinidad.component.UIXComponentBase.processDecodes(
> > > UIXComponentBase.java:725)
> > >        at javax.faces.component.UIComponentBase.processDecodes(
> > > UIComponentBase.java:872)
> > >        at javax.faces.component.UIViewRoot.processDecodes
> > > (UIViewRoot.java
> > > :306)
> > >    .....
> > >
> > >
> > > What I found out until now is that the row index is set, at some
> > > point, to
> > > the wrong value(-1).
> > > Also in the sources from Trinidad in
> > > org.apache.myfaces.trinidad.component.UIXComponent
> > > I found this comment in the getRowKey() method:
> > > // See bug 4534104.
> > > // Sometimes the rowKey for a particular row changes during update
> model
> > > // (this happens in ADFM if you edit the primary key of a row).
> > > // It is bad if the rowKey changes after _restoreStampState() and
> > > // before _saveStampState(). Therefore, we cache it:..
> > >
> > > I know that coding the new lines from within the bean is an option but
> > > I would like to keep the tags. It's easier to do table formatting and
> > > styling.
> > >
> > >
> > > Any advise is welcomed.
> > >
> > >
> > > Thanks,
> > > Sabina
> > >
> >
> >
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message