[
http://issues.apache.org/jira/browse/MYFACES-331?page=comments#action_12316133
]
Mike Kienenberger commented on MYFACES-331:
-------------------------------------------
I understand what you've done now and why it breaks my code.
However, I can't really comment on it further because the latest changes have
also broken the initialization of my component, so I never get to the
save/restore issue.
If you run my example code, you'll see that the UIColumns column headers are
all there, but none of the checkboxes in the UIColumns component.
When my data model tag is initialized, I assign a value binding to my
UIColumn's UISelectBoolean.
However, before it can be rendered, UIColumn's setRowIndex method "restores"
null back to my value binding. This is happening when HtmlTableRenderer's
renderColumnChildHeaderOrFooterRow is called. As far as I know, this is also
before any state was ever saved for UIColumns' children.
This means you can no longer programmically assign value bindings to a child of
UIColumns, if I understand what's happening correctly, because they'll be
erased during rendering.
============STACK TRACE OF INITIALIZATION===========================
Thread [SocketListener0-1] (Suspended (breakpoint at line 248 in
jsf.component.RowAndColumnRelationshipsHtmlDataTable))
jsf.component.RowAndColumnRelationshipsHtmlDataTable.initializeDataModels()
line: 248
jsf.component.RowAndColumnRelationshipsHtmlDataTable.setRowAndColumnRelationshipDataValueBindingString(java.lang.String)
line: 205
jsf.component.taglib.RowAndColumnRelationshipsHtmlDataTableTag.setProperties(javax.faces.component.UIComponent)
line: 43
jsf.component.taglib.RowAndColumnRelationshipsHtmlDataTableTag(javax.faces.webapp.UIComponentTag).findComponent(javax.faces.context.FacesContext)
line: 392
jsf.component.taglib.RowAndColumnRelationshipsHtmlDataTableTag(javax.faces.webapp.UIComponentTag).doStartTag()
line: 219
org.apache.jsp.ExampleRowAndColumnRelationshipPage_jspx._jspx_meth_example_rowAndColumnRelationshipsHtmlDataTable_0(javax.servlet.jsp.tagext.JspTag,
javax.servlet.jsp.PageContext) line: 32
org.apache.jsp.ExampleRowAndColumnRelationshipPage_jspx._jspx_meth_h_form_0(javax.servlet.jsp.tagext.JspTag,
javax.servlet.jsp.PageContext) line: not available
org.apache.jsp.ExampleRowAndColumnRelationshipPage_jspx._jspx_meth_f_view_0(javax.servlet.jsp.PageContext)
line: 16
org.apache.jsp.ExampleRowAndColumnRelationshipPage_jspx._jspService(javax.servlet.http.HttpServletRequest,
javax.servlet.http.HttpServletResponse) line: not available
org.apache.jsp.ExampleRowAndColumnRelationshipPage_jspx(org.apache.jasper.runtime.HttpJspBase).service(javax.servlet.http.HttpServletRequest,
javax.servlet.http.HttpServletResponse) line: 94
org.apache.jsp.ExampleRowAndColumnRelationshipPage_jspx(javax.servlet.http.HttpServlet).service(javax.servlet.ServletRequest,
javax.servlet.ServletResponse) line: 689
org.apache.jasper.servlet.JspServletWrapper.service(javax.servlet.http.HttpServletRequest,
javax.servlet.http.HttpServletResponse, boolean) line: 324
org.apache.jasper.servlet.JspServlet.serviceJspFile(javax.servlet.http.HttpServletRequest,
javax.servlet.http.HttpServletResponse, java.lang.String, java.lang.Throwable,
boolean) line: 292
org.apache.jasper.servlet.JspServlet.service(javax.servlet.http.HttpServletRequest,
javax.servlet.http.HttpServletResponse) line: 236
org.apache.jasper.servlet.JspServlet(javax.servlet.http.HttpServlet).service(javax.servlet.ServletRequest,
javax.servlet.ServletResponse) line: 689
org.mortbay.jetty.servlet.ServletHolder.handle(javax.servlet.ServletRequest,
javax.servlet.ServletResponse) line: 427
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(java.lang.String,
javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse,
org.mortbay.jetty.servlet.ServletHolder, int) line: 475
org.mortbay.jetty.servlet.Dispatcher.dispatch(javax.servlet.ServletRequest,
javax.servlet.ServletResponse, int) line: 275
org.mortbay.jetty.servlet.Dispatcher.forward(javax.servlet.ServletRequest,
javax.servlet.ServletResponse) line: 169
org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(java.lang.String)
line: 415
org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(javax.faces.context.FacesContext,
javax.faces.component.UIViewRoot) line: 226
org.apache.myfaces.lifecycle.LifecycleImpl.render(javax.faces.context.FacesContext)
line: 299
javax.faces.webapp.FacesServlet.service(javax.servlet.ServletRequest,
javax.servlet.ServletResponse) line: 95
=======================================
=================STACK TRACE OF RESTORE-TO-NULL BEHAVIOR======================
Thread [SocketListener0-1] (Suspended (breakpoint at line 753 in
javax.faces.component.UIComponentBase))
javax.faces.component.UISelectBoolean(javax.faces.component.UIComponentBase).restoreValueBindingMap(javax.faces.context.FacesContext,
java.lang.Object) line: 753
javax.faces.component.UISelectBoolean(javax.faces.component.UIComponentBase).restoreState(javax.faces.context.FacesContext,
java.lang.Object) line: 695
javax.faces.component.UISelectBoolean(javax.faces.component.UIOutput).restoreState(javax.faces.context.FacesContext,
java.lang.Object) line: 91
javax.faces.component.UISelectBoolean(javax.faces.component.UIInput).restoreState(javax.faces.context.FacesContext,
java.lang.Object) line: 384
javax.faces.component.UISelectBoolean(javax.faces.component.UIComponentBase).processRestoreState(javax.faces.context.FacesContext,
java.lang.Object) line: 508
org.apache.myfaces.custom.crosstable.UIColumns(javax.faces.component.UIComponentBase).processRestoreState(javax.faces.context.FacesContext,
java.lang.Object) line: 499
org.apache.myfaces.custom.crosstable.UIColumns.setRowIndex(int) line:
171
org.apache.myfaces.renderkit.html.ext.HtmlTableRenderer.renderColumnChildHeaderOrFooterRow(javax.faces.context.FacesContext,
javax.faces.context.ResponseWriter, javax.faces.component.UIComponent,
java.lang.String, boolean) line: 82
org.apache.myfaces.renderkit.html.ext.HtmlTableRenderer(org.apache.myfaces.renderkit.html.HtmlTableRendererBase).renderColumnHeaderOrFooterRow(javax.faces.context.FacesContext,
javax.faces.context.ResponseWriter, javax.faces.component.UIComponent,
java.lang.String, boolean) line: 449
org.apache.myfaces.renderkit.html.ext.HtmlTableRenderer(org.apache.myfaces.renderkit.html.HtmlTableRendererBase).renderColumnHeaderRow(javax.faces.context.FacesContext,
javax.faces.context.ResponseWriter, javax.faces.component.UIComponent,
java.lang.String) line: 397
org.apache.myfaces.renderkit.html.ext.HtmlTableRenderer(org.apache.myfaces.renderkit.html.HtmlTableRendererBase).renderFacet(javax.faces.context.FacesContext,
javax.faces.context.ResponseWriter, javax.faces.component.UIComponent,
boolean) line: 311
org.apache.myfaces.renderkit.html.ext.HtmlTableRenderer(org.apache.myfaces.renderkit.html.HtmlTableRendererBase).encodeBegin(javax.faces.context.FacesContext,
javax.faces.component.UIComponent) line: 75
jsf.component.RowAndColumnRelationshipsHtmlDataTable(javax.faces.component.UIComponentBase).encodeBegin(javax.faces.context.FacesContext)
line: 303
jsf.component.RowAndColumnRelationshipsHtmlDataTable(javax.faces.component.UIData).encodeBegin(javax.faces.context.FacesContext)
line: 372
jsf.component.RowAndColumnRelationshipsHtmlDataTable(org.apache.myfaces.component.html.ext.HtmlDataTableHack).encodeBegin(javax.faces.context.FacesContext)
line: 122
jsf.component.RowAndColumnRelationshipsHtmlDataTable(org.apache.myfaces.component.html.ext.HtmlDataTable).encodeBegin(javax.faces.context.FacesContext)
line: 259
jsf.component.taglib.RowAndColumnRelationshipsHtmlDataTableTag(javax.faces.webapp.UIComponentTag).encodeBegin()
line: 337
jsf.component.taglib.RowAndColumnRelationshipsHtmlDataTableTag(javax.faces.webapp.UIComponentTag).doEndTag()
line: 250
jsf.component.taglib.RowAndColumnRelationshipsHtmlDataTableTag(org.apache.myfaces.taglib.UIComponentBodyTagBase).doEndTag()
line: 55
org.apache.jsp.ExampleRowAndColumnRelationshipPage_jspx._jspx_meth_example_rowAndColumnRelationshipsHtmlDataTable_0(javax.servlet.jsp.tagext.JspTag,
javax.servlet.jsp.PageContext) line: not available
org.apache.jsp.ExampleRowAndColumnRelationshipPage_jspx._jspx_meth_h_form_0(javax.servlet.jsp.tagext.JspTag,
javax.servlet.jsp.PageContext) line: not available
org.apache.jsp.ExampleRowAndColumnRelationshipPage_jspx._jspx_meth_f_view_0(javax.servlet.jsp.PageContext)
line: 16
org.apache.jsp.ExampleRowAndColumnRelationshipPage_jspx._jspService(javax.servlet.http.HttpServletRequest,
javax.servlet.http.HttpServletResponse) line: not available
org.apache.jsp.ExampleRowAndColumnRelationshipPage_jspx(org.apache.jasper.runtime.HttpJspBase).service(javax.servlet.http.HttpServletRequest,
javax.servlet.http.HttpServletResponse) line: 94
org.apache.jsp.ExampleRowAndColumnRelationshipPage_jspx(javax.servlet.http.HttpServlet).service(javax.servlet.ServletRequest,
javax.servlet.ServletResponse) line: 689
org.apache.jasper.servlet.JspServletWrapper.service(javax.servlet.http.HttpServletRequest,
javax.servlet.http.HttpServletResponse, boolean) line: 324
org.apache.jasper.servlet.JspServlet.serviceJspFile(javax.servlet.http.HttpServletRequest,
javax.servlet.http.HttpServletResponse, java.lang.String, java.lang.Throwable,
boolean) line: 292
org.apache.jasper.servlet.JspServlet.service(javax.servlet.http.HttpServletRequest,
javax.servlet.http.HttpServletResponse) line: 236
org.apache.jasper.servlet.JspServlet(javax.servlet.http.HttpServlet).service(javax.servlet.ServletRequest,
javax.servlet.ServletResponse) line: 689
org.mortbay.jetty.servlet.ServletHolder.handle(javax.servlet.ServletRequest,
javax.servlet.ServletResponse) line: 427
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(java.lang.String,
javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse,
org.mortbay.jetty.servlet.ServletHolder, int) line: 475
org.mortbay.jetty.servlet.Dispatcher.dispatch(javax.servlet.ServletRequest,
javax.servlet.ServletResponse, int) line: 275
org.mortbay.jetty.servlet.Dispatcher.forward(javax.servlet.ServletRequest,
javax.servlet.ServletResponse) line: 169
org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(java.lang.String)
line: 415
org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(javax.faces.context.FacesContext,
javax.faces.component.UIViewRoot) line: 226
org.apache.myfaces.lifecycle.LifecycleImpl.render(javax.faces.context.FacesContext)
line: 299
javax.faces.webapp.FacesServlet.service(javax.servlet.ServletRequest,
javax.servlet.ServletResponse) line: 95
=======================================
> post-Mathias-Broekelmann x:dataTable doesn't work with dynamically-created
> UIColumns data.
> ------------------------------------------------------------------------------------------
>
> Key: MYFACES-331
> URL: http://issues.apache.org/jira/browse/MYFACES-331
> Project: MyFaces
> Type: Bug
> Versions: Nightly Build
> Reporter: Mike Kienenberger
> Assignee: Mathias Broekelmann
> Attachments: RowAndColumnRelationshipComponent.zip
>
> Mathias, I still have to use the BEFORE_SVN_REORG version as your new
> dataTable code still isn't working with programmically-created
> UIColumns elements -- they get lost after a page refresh, probably due
> to a save/restore state issue. My programmically-created
> footer-with-UICommand and UI-Column-with-UIOutput row header are saved and
> restored properly, though.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira