[ http://issues.apache.org/jira/browse/MYFACES-817?page=comments#action_12357548 ]
Simon Kitching commented on MYFACES-817: ---------------------------------------- Hi Matthias, I see you're using myfaces-1.1.1. A fair bit of change has gone on in this area since that release. I suggest you try a nightly build to see if that resolves the issue. The latest nightlies appear to be reasonably stable. I am using checkboxes in table columns successfully with the SVN HEAD version, though via a custom component rather than the SelectBooleanCheckbox component. Regards, Simon > Runtime error using Tomahawk dataTable + selectBooleanCheckboxes (MyFaces > 1.1.1) > -------------------------------------------------------------------------------- > > Key: MYFACES-817 > URL: http://issues.apache.org/jira/browse/MYFACES-817 > Project: MyFaces > Type: Bug > Components: Tomahawk > Versions: 1.1.1 > Environment: Windows XP Prof., jboss-4.0.1sp1 for the J2EE? 1.4 codebase > Reporter: Matthias Kahlau > Priority: Blocker > > I have a problem with the Tomahawk dataTable component, in conjunction with > a selectBooleanCheckbox in each row. I use a Component-Binding for each > component, and determining the selected > checkboxes works well. But after that, I get the following runtime error: > null > java.lang.NullPointerException > at > org.apache.myfaces.component.html.ext.HtmlDataTableHack.restoreDescendantComponentStates(HtmlDataTableHack.java:245) > at > org.apache.myfaces.component.html.ext.HtmlDataTableHack.restoreDescendantComponentStates(HtmlDataTableHack.java:257) > at > org.apache.myfaces.component.html.ext.HtmlDataTableHack.setRowIndex(HtmlDataTableHack.java:200) > at > org.apache.myfaces.component.html.ext.HtmlDataTable.setRowIndex(HtmlDataTable.java:166) > at > javax.faces.component.html.HtmlDataTable.encodeBegin(HtmlDataTable.java:35) > at > org.apache.myfaces.component.html.ext.HtmlDataTableHack.encodeBegin(HtmlDataTableHack.java:126) > at > org.apache.myfaces.component.html.ext.HtmlDataTable.encodeBegin(HtmlDataTable.java:312) > at > org.apache.myfaces.renderkit.RendererUtils.renderChild(RendererUtils.java:441) > at > org.apache.myfaces.renderkit.RendererUtils.renderChildren(RendererUtils.java:427) > at > org.apache.myfaces.renderkit.html.HtmlGroupRendererBase.encodeEnd(HtmlGroupRendererBase.java:62) > at > javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:331) > at > org.apache.myfaces.renderkit.RendererUtils.renderChild(RendererUtils.java:450) > at > org.apache.myfaces.custom.tabbedpane.HtmlTabbedPaneRenderer.writeTabsContents(HtmlTabbedPaneRenderer.java:535) > at > org.apache.myfaces.custom.tabbedpane.HtmlTabbedPaneRenderer.encodeEnd(HtmlTabbedPaneRenderer.java:227) > at > javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:331) > at javax.faces.webapp.UIComponentTag.encodeEnd(UIComponentTag.java:349) > at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:253) > at > org.apache.myfaces.taglib.UIComponentBodyTagBase.doEndTag(UIComponentBodyTagBase.java:55) > at > org.apache.jsp.Management.ManagementHome_jsp._jspx_meth_t_panelTabbedPane_0(ManagementHome_jsp.java:302) > at > org.apache.jsp.Management.ManagementHome_jsp._jspx_meth_h_form_0(ManagementHome_jsp.java:238) > at > org.apache.jsp.Management.ManagementHome_jsp._jspx_meth_f_view_0(ManagementHome_jsp.java:191) > at > org.apache.jsp.Management.ManagementHome_jsp._jspService(ManagementHome_jsp.java:145) > at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) > at > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) > at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) > at > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704) > at > org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474) > at > org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409) > at > org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312) > at > org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:415) > at > org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:234) > at > org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:352) > at javax.faces.webapp.FacesServlet.service(FacesServlet.java:107) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) > at > org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:122) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) > at > org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > at > org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > at > org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:66) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) > at > org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:150) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) > at > org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:54) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) > at > org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) > at > org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) > at > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) > at java.lang.Thread.run(Thread.java:534) > ---------------- > Part of JSP: > ---------------- > <t:dataTable id="dataTableUmfragen" > binding="#{UmfrageBacking.dataTable}" > lang="de" > title="Tabelle zur Auswahl eigener Umfragen" > summary="Tabelle zur Übersicht und Auswahl eigener Umfragen" > value="#{UmfrageBacking.durchfuehrungen}" > var="row" > rows="10" > renderedIfEmpty="true" > preserveDataModel="false" > preserveSort="true" > sortColumn="#{UmfrageBacking.sortColumn}" > sortAscending="#{UmfrageBacking.sortAscending}" > styleClass="" > headerClass="" > footerClass="" > rowClasses="" > columnClasses="" > rowOnMouseOver="this.style.backgroundColor='#A5CBFF'" > rowOnMouseOut="this.style.backgroundColor='#FFFFE0'" > rowOnClick="this.style.backgroundColor='#FFE0E0'" > rowOnDblClick="this.style.backgroundColor='#E0E0E0'" > width="700"> > <t:column width="30"> > <h:selectBooleanCheckbox binding="#{UmfrageBacking.checkbox}" > title="Umfrage auswählen zur Ausführung einer Aktion" /> > </t:column> > <t:column> > <f:facet name="header"> > <t:commandSortHeader > columnName="#{UmfrageBacking.colName_Bezeichnung}" > arrow="true" > lang="de" > title="#{managementBundle.sort_message}"> > <h:outputText value="#{UmfrageBacking.colName_Bezeichnung}"/> > </t:commandSortHeader> > </f:facet> > <h:commandLink action="#{UmfrageBacking.edit}"> > <h:outputText value="#{row.bezeichnung}"/> > </h:commandLink> > </t:column> > .... > </t:dataTable> > ------------------------------ > Part of Backing-Bean: > ------------------------------ > // Declarations for the component bindings > private UIData dataTable; > private UISelectBoolean checkbox; > // action method to delete the selected items > public String delete() { > List currentUmfragen = (List)this.durchfuehrungen.getWrappedData(); > List toDelete = this.getSelectedDurchfuehrungen(); > int size = toDelete.size(); > for (int i = 0; i < size; i++) { > currentUmfragen.remove(toDelete.get(i)); > } > return Constants.ACTION_SUCCESS; > } > // method to determine the selected items > private List getSelectedDurchfuehrungen() { > List selected = new ArrayList(); > int first = this.dataTable.getFirst(); > int rows = this.dataTable.getRows(); > for (int i = first; i < (first + rows); i++) { > this.dataTable.setRowIndex(i); > if (this.checkbox.isSelected()) { > selected.add(this.dataTable.getRowData()); > } > } > return selected; > } -- 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