java - h:dataTable binding => duplicate ID -


i have problem using htmldatatable viewing data database.

when create component, table has (not always) twice number of columns.

it shown correctly , after several refreshes (without move in dtb or something) there example 6 columns instead of 3 , application (sometimes) become unstable. since time can't work table because reports "duplicate id component"..

simple example (source: http://balusc.blogspot.com/2006/06/using-datatables.html):

<h:form id="bde">       <h:datatable id="tbl"                    binding="#{mybde.datatable}"                    value="#{mybde.datalist}"                     var="bdeitem">       <h:column>         <f:facet name="header">           <h:outputtext value="s" />         </f:facet>         <h:outputtext value="#{bdeitem.s}" rendered="#{!mybde.editmoderow}"/>         <h:inputtext value="#{bdeitem.s}" rendered="#{mybde.editmoderow}" required="true" size="3"/>       </h:column>        <h:column>         <f:facet name="header">            <h:outputtext value="id" />         </f:facet>         <h:outputtext value="#{bdeitem.id}"/>       </h:column>     </h:datatable>   </h:form>  

and java.class

protected htmldatatable datatable;    public void setdatatable(htmldatatable datatable)    {     this.datatable = datatable;   }    public htmldatatable getdatatable()    {     if (datatable == null)      {        datatable = new htmldatatable();        datatable.setrows(default_table_rows);      }      return datatable;   }  

and error message:

javax.servlet.servletexception: component id j_idt92:bde:tbl:j_idt129 has been found in view.         javax.faces.webapp.facesservlet.service(facesservlet.java:422)    root cause    java.lang.illegalstateexception: component id j_idt92:bde2:tbl:j_idt129 has been found in view.         com.sun.faces.util.util.checkiduniqueness(util.java:821)       com.sun.faces.util.util.checkiduniqueness(util.java:805)       com.sun.faces.util.util.checkiduniqueness(util.java:805)       com.sun.faces.util.util.checkiduniqueness(util.java:805)       com.sun.faces.util.util.checkiduniqueness(util.java:805)       com.sun.faces.util.util.checkiduniqueness(util.java:805)       com.sun.faces.application.view.statemanagementstrategyimpl.saveview(statemanagementstrategyimpl.java:144)       com.sun.faces.application.statemanagerimpl.saveview(statemanagerimpl.java:133)       com.sun.faces.application.view.writebehindstatewriter.flushtowriter(writebehindstatewriter.java:225)       com.sun.faces.application.view.faceletviewhandlingstrategy.renderview(faceletviewhandlingstrategy.java:418)       com.sun.faces.application.view.multiviewhandler.renderview(multiviewhandler.java:131)       com.sun.faces.lifecycle.renderresponsephase.execute(renderresponsephase.java:121)       com.sun.faces.lifecycle.phase.dophase(phase.java:101)       com.sun.faces.lifecycle.lifecycleimpl.render(lifecycleimpl.java:139)       javax.faces.webapp.facesservlet.service(facesservlet.java:410)   

followed tree of components. thing there's nothing duplicated in code, datatable create new columns , after it's duplicated

i have 2 working similar modules, , third doesn´t work.

have ever met kind of problem?

thanks advice

this can happen if bean session scoped instead of request scoped , you're sharing bean among multiple views. best keep bean component been bound in request scope.

as alternative, can use datamodel value instead of binding table htmldatatable if functional requirement selected row.


Comments