ordering List - Exception when List does not consist of List
suckerd Jan 10, 2008 3:59 AMHi,
I get an exception when using ordering List with a List, that does not consist of Strings, but of a Bean with multiple attributes...
The problem occurs on a page submit only and says basically that
getDescription() is not a valid method for String (due to the item.description), but I never said it would be a List of Strings !?!?
I'm using richfaces 3.1.3GA / jsf1.2 RI (1.2_04-b16-p02) / facelets 1.1.13
Am I doing something wrong here or is that a bug?
THX Mike
My page looks like that:
<rich:orderingList value="#{managedBean.orderingList}" var="item" listHeight="300" listWidth="350" > <rich:column width="180"> <f:facet name="header"> Description </f:facet> <h:outputText value="#{item.description}"></h:outputText> </rich:column> <rich:column width="180"> <f:facet name="header"> Name </f:facet> <h:outputText value="#{item.name}"></h:outputText> </rich:column> </rich:orderingList>
Managed Bean snippet:
public SimpleTreeBean() { this.orderingList = new ArrayList<TestPO>(); this.orderingList.add(new TestPO("Germany", "Deutschland", "de")); this.orderingList.add(new TestPO("Switzerland", "Schweiz", "de")); this.orderingList.add(new TestPO("Great Britain", "Großbritannien", "de")); this.orderingList.add(new TestPO("Sweden", "Schweden", "de")); } public List<TestPO> getOrderingList() { return orderingList; } public void setOrderingList(List<TestPO> orderingList) { this.orderingList = orderingList; if (this.orderingList != null) { LOGGER.info("first object in list is now: " + this.orderingList.get(0)); } }
Stacktrace after submit:
javax.faces.FacesException: javax.el.PropertyNotFoundException: /pages/sandbox/treeTest.xhtml @45,48 value="#{item.description}": Property 'description' not found on type java.lang.String at javax.faces.component.UIOutput.getValue(UIOutput.java:176) at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:189) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:320) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:200) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836) at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:286) at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:262) at org.richfaces.renderkit.OrderingListRendererBase.encodeOneRow(OrderingListRendererBase.java:183) at org.richfaces.renderkit.AbstractRowsRenderer.process(AbstractRowsRenderer.java:87) at org.richfaces.model.OrderingListDataModel.walk(OrderingListDataModel.java:46) at org.ajax4jsf.component.UIDataAdaptor.walk(UIDataAdaptor.java:994) at org.richfaces.renderkit.AbstractRowsRenderer.encodeRows(AbstractRowsRenderer.java:107) at org.richfaces.renderkit.OrderingListRendererBase.encodeRows(OrderingListRendererBase.java:107) at org.richfaces.renderkit.AbstractRowsRenderer.encodeChildren(AbstractRowsRenderer.java:139) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892) at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:577) at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108) at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:595) Caused by: javax.el.PropertyNotFoundException: /pages/sandbox/treeTest.xhtml @45,48 value="#{item.description}": Property 'description' not found on type java.lang.String at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:73) at javax.faces.component.UIOutput.getValue(UIOutput.java:173) ... 46 more