tags:

views:

362

answers:

3

I have several tabs and one of the tabs uses rich:extendedDataTable. If sortBy is clicked in the page where table is used and if I navigate to another page, it looks for the bean of the old page and throws an error saying that sortyBy of the column is undefined.

E.g. If I use sortBy on userId in tab1 (where the column must have sortBy="#{data.userId}") and then I click on tab2, it looks for the data.userId and throws an error. I am using Richfaces version 3.2.2SR1.

Can anyone help me on this?

Here is the complete trace:

javax.el.PropertyNotFoundException: /amendapplication/historyDetails.xhtml @33,174 sortBy="#{data.statusChangeTime}": Property 'statusChangeTime' not found on type uk.gov.wales.rpd.domain.applicationmanagement.ApplicationAttributeEntity
    com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:73)
    org.richfaces.model.impl.expressive.ValueBindingExpression.evaluate(ValueBindingExpression.java:59)
    org.richfaces.model.impl.expressive.ObjectWrapperFactory.wrapObject(ObjectWrapperFactory.java:189)
    org.richfaces.model.ModifiableModel$RowKeyWrapperFactory.wrapObject(ModifiableModel.java:57)
    org.richfaces.model.impl.expressive.ObjectWrapperFactory$2.convert(ObjectWrapperFactory.java:177)
    org.richfaces.model.impl.expressive.ObjectWrapperFactory.convertList(ObjectWrapperFactory.java:138)
    org.richfaces.model.impl.expressive.ObjectWrapperFactory.wrapList(ObjectWrapperFactory.java:175)
    org.richfaces.model.ModifiableModel.sort(ModifiableModel.java:235)
    org.richfaces.model.ModifiableModel.modify(ModifiableModel.java:206)
    org.richfaces.component.UIExtendedDataTable.createDataModel(UIExtendedDataTable.java:310)
    org.ajax4jsf.component.UIDataAdaptor.getExtendedDataModel(UIDataAdaptor.java:621)
    org.ajax4jsf.component.UIDataAdaptor.setRowKey(UIDataAdaptor.java:339)
    org.ajax4jsf.component.UIDataAdaptor.iterate(UIDataAdaptor.java:1034)
    org.ajax4jsf.component.UIDataAdaptor.processDecodes(UIDataAdaptor.java:1158)
    org.ajax4jsf.component.UIDataAdaptor.processDecodes(UIDataAdaptor.java:1168)
    javax.faces.component.UIForm.processDecodes(UIForm.java:209)
    org.ajax4jsf.component.AjaxViewRoot$1.invokeContextCallback(AjaxViewRoot.java:392)
    org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:238)
    org.ajax4jsf.component.AjaxViewRoot.processDecodes(AjaxViewRoot.java:409)
    com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
    org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:341)
    org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177)
    org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
    org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
    org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
A: 

Look like as if you've bound multiple different datatables to the same UIData property, or that you're reusing the same bean property to supply different datamodels depending on the displayed tab/table.

You can and should not reuse the one and the same bean property for different components and/or different value purposes. Verify if anything is right in your beans.

BalusC
A: 

Hi Balus, we have a layout template file and we define the ui layout as below

and in the actual xhtml we define

............

and rest of the pages have their own beans defined.Am i doingwrong anywhere?

A: 

we do not have several datatables in the pages.Pages which do not have datatables also throw the error.