[richfaces-issues] [JBoss JIRA] Commented: (RF-5041) ExtendedDataTable don't reRender with dynamic columns.

Pawel Golawski (JIRA) jira-events at lists.jboss.org
Tue Dec 23 03:03:55 EST 2008


    [ https://jira.jboss.org/jira/browse/RF-5041?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12443959#action_12443959 ] 

Pawel Golawski commented on RF-5041:
------------------------------------

Hi Nicolas!
I'm not sure if I understand you.
If  tableState attribute is bound with backing bean property, getTableState calls getter for it using ValueExpression. 
But setTableState set fixed value and afterward getTableState doesn't use ValueExpression and getter for backing bean property is not called. Instead the last set value if always returned.
So if you want to change table state, simply change backing bean property and do not call setTableState method.
This mechanism refers to every component attribute.

> ExtendedDataTable don't reRender with dynamic columns.
> ------------------------------------------------------
>
>                 Key: RF-5041
>                 URL: https://jira.jboss.org/jira/browse/RF-5041
>             Project: RichFaces
>          Issue Type: Bug
>    Affects Versions: 3.3.0
>         Environment: IE6,7, FF3.0.3, Safari 3.1, Opera 9.62(seam 2.0.2.GA)
>            Reporter: Mikhail Vitenkov
>            Assignee: Pawel Golawski
>             Fix For: 3.3.0
>
>
> #1. Add extendedDataTable to page:
> <rich:extendedDataTable value="#{testBean.rows}" var="row">
> 			<rich:columns value="#{testBean.columns}" var="column" index="ind">
> 				<f:facet name="header">
> 					<h:outputText value="#{column.name}" />
> 				</f:facet>
> 				<h:outputText value="#{row[ind]}" />
> 			</rich:columns>
> 		</rich:extendedDataTable>
> 		<a:commandButton value="Add column" action="#{testBean.addAColumn}" reRender="form" />
> #2. Define addAColumn method following way:
> public void addAColumn(){
> 		columns=Arrays.asList(new Column[]{new Column("Col1"),new Column("Col2"),new Column("Col3")});
> 		rows=Arrays.asList(Arrays.asList(new String[]{"a","b","c"}),Arrays.asList(new String[]{"d","e","f"}));
> 	}
> #3. Navigate to page, contained tested component & try to add one row.
> Following exception occurs:
> Error Rendering View[/CustomizePage/CustomizePage.xhtml]
> java.lang.NullPointerException
> 	at org.richfaces.component.ColumnsSizeState.getColumnSize(ExtendedDataTableState.java:299)
> 	at org.richfaces.component.ExtendedDataTableState.getColumnSize(ExtendedDataTableState.java:159)
> 	at org.richfaces.component.UIExtendedDataTable.getColumnSize(UIExtendedDataTable.java:183)
> 	at org.richfaces.renderkit.AbstractExtendedTableRenderer.encodeColumns(AbstractExtendedTableRenderer.java:130)
> 	at org.richfaces.renderkit.html.ExtendedDataTableRenderer.doEncodeBegin(ExtendedDataTableRenderer.java:281)
> 	at org.richfaces.renderkit.html.ExtendedDataTableRenderer.doEncodeBegin(ExtendedDataTableRenderer.java:216)
> 	at org.ajax4jsf.renderkit.RendererBase.encodeBegin(RendererBase.java:101)
> 	at org.richfaces.renderkit.AbstractExtendedTableRenderer.encodeBegin(AbstractExtendedTableRenderer.java:1346)
> 	at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:788)
> 	at javax.faces.component.UIData.encodeBegin(UIData.java:879)
> 	at org.ajax4jsf.component.UIDataAdaptor.encodeBegin(UIDataAdaptor.java:1220)
> 	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:884)
> 	at javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
> 	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
> 	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:282)
> 	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:124)
> 	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:67)
> 	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:115)
> 	at org.ajax4jsf.renderkit.AjaxContainerRenderer.encodeAjax(AjaxContainerRenderer.java:123)
> 	at org.ajax4jsf.component.AjaxViewRoot.encodeAjax(AjaxViewRoot.java:677)
> 	at org.ajax4jsf.component.AjaxViewRoot.encodeChildren(AjaxViewRoot.java:548)
> 	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
> 	at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
> 	at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
> 	at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:197)
> 	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.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
> 	at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
> 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
> 	at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
> 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
> 	at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
> 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
> 	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:565)
> 	at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
> 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
> 	at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
> 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
> 	at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
> 	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
> 	at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> 	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
> 	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:307)
> 	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:423)
> 	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:550)
> 	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.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
> 	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> 	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:262)
> 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
> 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
> 	at java.lang.Thread.run(Unknown Source)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the richfaces-issues mailing list