incubator-adffaces-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Laurie Harper <lau...@holoweb.net>
Subject Possible bug in tr:table sorting
Date Wed, 23 Aug 2006 06:09:21 GMT
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}"/>
                     &#160;
                     <tr:commandLink action="edit" text="delete"  
rendered="${not empty row.id}"/>
                     &#160;
                     <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 &#160; (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="&#160;"/>

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.restoreChildStampState( 
StampState.java:152)
         at  
org.apache.myfaces.trinidad.component.UIXTable.restoreStampState 
(UIXTable.java:317)
         at  
org.apache.myfaces.trinidad.component.UIXCollection._restoreStampState 
(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.processFacetsAndChildren( 
UIXTable.java:265)
         at  
org.apache.myfaces.trinidad.component.UIXCollection.decodeChildrenImpl 
(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.decodeChildrenImp 
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.decodeChildrenImp 
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.decodeChildrenImp 
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.decodeChildrenImp 
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.doFil 
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._invokeDoF 
ilter(TrinidadFilterImpl.java:327)
         at  
org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterI 
mpl(TrinidadFilterImpl.java:291)
         at  
org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter 
(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/




Mime
View raw message