I think that one is actually Facelets. By just inlining the text,
it is marked transient (according to Facelets) so on restore view
(I think that's the phase, but I'm probably wrong) your panel
group doesn't have as many elements in it, or something like
that. By using outputText, it sticks around.
I had a similar problem using t:tree2 because one of my facets was
just inline text and EL. Changing it to h:outputText fixed it.
________________________________
From: Laurie Harper [mailto:[EMAIL PROTECTED]
Sent: Wed 23-Aug-06 1:09 AM
To: adffaces-user@incubator.apache.org
Subject: Possible bug in tr:table sorting
I just tracked down the cause of an exception raised during sorting
of a tr:table component in my application, and it seems to be a
Trinidad bug. Here's the problem markup:
<tr:column noWrap="true">
<tr:panelGroupLayout><!-- FIXME: why do we need this
here? -->
<tr:commandLink action="edit" text="edit"
rendered="${not empty row.id}"/>
 
<tr:commandLink action="edit" text="delete"
rendered="${not empty row.id}"/>
 
<tr:commandLink action="edit" text="split"
rendered="${not empty row.id}"/>
</tr:panelGroupLayout>
</tr:column>
The tr:panelGroupLayout is there because otherwise each link is
wrapped in a <div> element (even if I set separateRows="false"; is
that correct??); the   (non-breakig space) entities are there
because otherwise the links run into each other -- that may be a
function of Facelets' stripping of element-only whitespace.
When I sort any column in the table, I get a nasty IndexOutOfBounds
exception. It turns out to be the non-breaking space entities; if I
change those to
<tr:outputText value=" "/>
the exception goes away. Since (I think) Facelets turns template text
into UIText components, I'm not sure why the raw character entity is
a problem? Here's the root stack trace, in case it helps at all ;-)
java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at
org.apache.myfaces.trinidad.component.UIXCollection.restoreStampState
(UIXCollection.java:820)
at
org.apache.myfaces.trinidad.component.UIXTable.restoreStampState
(UIXTable.java:320)
at
org.apache.myfaces.trinidad.component.StampState.restoreChildStampSta
te(
StampState.java:152)
at
org.apache.myfaces.trinidad.component.UIXTable.restoreStampState
(UIXTable.java:317)
at
org.apache.myfaces.trinidad.component.UIXCollection._restoreStampStat
e
(UIXCollection.java:1094)
at
org.apache.myfaces.trinidad.component.UIXCollection.postRowDataChange
(UIXCollection.java:712)
at
org.apache.myfaces.trinidad.component.UIXCollection.setRowIndex
(UIXCollection.java:405)
at
org.apache.myfaces.trinidad.component.UIXTable._processStamps
(UIXTable.java:391)
at
org.apache.myfaces.trinidad.component.UIXTable.processFacetsAndChildr
en(
UIXTable.java:265)
at
org.apache.myfaces.trinidad.component.UIXCollection.decodeChildrenImp
l
(UIXCollection.java:155)
at
org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren
(UIXComponentBase.java:874)
at
org.apache.myfaces.trinidad.component.UIXCollection.processDecodes
(UIXCollection.java:149)
at
org.apache.myfaces.trinidad.component.UIXComponentBase.decodeChildren
Imp
l(UIXComponentBase.java:890)
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.decodeChildren
Imp
l(UIXComponentBase.java:890)
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.decodeChildren
Imp
l(UIXComponentBase.java:890)
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.decodeChildren
Imp
l(UIXComponentBase.java:890)
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:397)
at javax.faces.component.UIViewRoot.processDecodes
(UIViewRoot.java:131)
at
org.apache.myfaces.lifecycle.LifecycleImpl.applyRequestValues
(LifecycleImpl.java:200)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute
(LifecycleImpl.java:71)
at javax.faces.webapp.FacesServlet.service
(FacesServlet.java:
106)
at org.mortbay.jetty.servlet.ServletHolder.handle
(ServletHolder.java:442)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1051)
at
com.foo.projility.web.auth.UserAuthenticationFilter.doFilter
(UserAuthenticationFilter.java:80)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1042)
at
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.do
Fil
terInternal(OpenSessionInViewFilter.java:174)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter
(OncePerRequestFilter.java:76)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1042)
at org.apache.shale.faces.ShaleApplicationFilter.doFilter
(ShaleApplicationFilter.java:271)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1042)
at
org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._invoke
DoF
ilter(TrinidadFilterImpl.java:327)
at
org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilt
erI
mpl(TrinidadFilterImpl.java:291)
at
org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilte
r
(TrinidadFilterImpl.java:214)
at
org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter
(TrinidadFilter.java:90)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1042)
at org.mortbay.jetty.servlet.ServletHandler.handle
(ServletHandler.java:355)
at org.mortbay.jetty.servlet.SessionHandler.handle
(SessionHandler.java:226)
at org.mortbay.jetty.handler.ContextHandler.handle
(ContextHandler.java:615)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle
(ContextHandlerCollection.java:150)
at org.mortbay.jetty.handler.HandlerCollection.handle
(HandlerCollection.java:123)
at org.mortbay.jetty.handler.HandlerWrapper.handle
(HandlerWrapper.java:141)
at org.mortbay.jetty.Server.handle(Server.java:272)
at org.mortbay.jetty.HttpConnection.handlerRequest
(HttpConnection.java:396)
at org.mortbay.jetty.HttpConnection$RequestHandler.content
(HttpConnection.java:666)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:
613)
at org.mortbay.jetty.HttpParser.parseAvailable
(HttpParser.java:198)
at org.mortbay.jetty.HttpConnection.handle
(HttpConnection.java:311)
at org.mortbay.jetty.nio.HttpChannelEndPoint.run
(HttpChannelEndPoint.java:270)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run
(BoundedThreadPool.java:475)
--
Laurie Harper
Open Source advocate, Java geek: http://www.holoweb.net/laurie
Founder, Zotech Software: http://www.zotechsoftware.com/