java - h:dataTable problem - Target model Type is no a Collection or Array -
i've been literally struggling this, although there tons of tutorials on topic. i'm testing functionality of h:datatable component in jsf 2.0. have following list:
<h:datatable border="1" styleclass="data zebra" value="#{testtablewb.testlist}" var="items"> <h:column> <f:facet name="header"> <h:outputtext value="id"/> </f:facet> <h:outputtext value="#{items.id}"/> </h:column> <h:column> <f:facet name="header"> <h:outputtext value="name"/> </f:facet> <h:outputtext value="#{items.name}"/> </h:column> <h:column> <f:facet name="header"> <h:outputtext value="description"/> </f:facet> <h:outputtext value="#{items.description}"/> </h:column> <h:column> <f:facet name="header"> </f:facet> <h:selectmanycheckbox id="ids" value="#{items.id}"> <f:selectitem value="#{ids}" itemlabel="" /> </h:selectmanycheckbox> </h:column> <h:column> <f:facet name="header"> </f:facet> <h:commandlink action="testtablewb.somestupidaction" value="edit"> <f:param id="itemidedit" value="items.id"/> </h:commandlink> </h:column> <h:column> <f:facet name="header"> </f:facet> <h:commandlink action="testtablewb.somestupidaction" value="show"> <f:param id="itemidshow" value="items.id"/> </h:commandlink> </h:column> </h:datatable>
my managed bean looks this:
@managedbean(name="testtablewb") @requestscoped public class testtablewbr extends verificationwbr {
private list<testelement> testlist; public list<testelement> gettestlist() { testlist = new arraylist<testelement>(); (int i=0; i<5;i++){ testlist.add(new testelement(new long(i),"name"+i, "descrition"+i)); } testlist.add(new testelement(10l,"mark", "test element")); return this.testlist; } public void settestlist(list<testelement> ptestlist) { this.testlist = ptestlist; } public void somestupidaction(){ string parameter = facescontext.getcurrentinstance().getexternalcontext().getrequestparametermap().get("itemidedit"); }
so when click on 1 of command links - edit or show, i'm expecting action called , i'm having breakpoint there. instead error : target model type no collection or array , following stacktrace:
javax.faces.facesexception: target model type no collection or array @ com.sun.faces.renderkit.html_basic.menurenderer.convertselectmanyvaluesformodel(menurenderer.java:390) @ com.sun.faces.renderkit.html_basic.menurenderer.convertselectmanyvalue(menurenderer.java:127) @ com.sun.faces.renderkit.html_basic.menurenderer.getconvertedvalue(menurenderer.java:313) @ javax.faces.component.uiinput.getconvertedvalue(uiinput.java:1008) @ javax.faces.component.uiinput.validate(uiinput.java:934) @ javax.faces.component.uiinput.executevalidate(uiinput.java:1189) @ javax.faces.component.uiinput.processvalidators(uiinput.java:691) @ javax.faces.component.uidata.iterate(uidata.java:1424) @ javax.faces.component.uidata.processvalidators(uidata.java:1015) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1080) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1080) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1080) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1080) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1080) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1080) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1080) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1080) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1080) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1080) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1080) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1080) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1080) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1080) @ javax.faces.component.uiform.processvalidators(uiform.java:243) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1080) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1080) @ javax.faces.component.uiviewroot.processvalidators(uiviewroot.java:1179) @ com.sun.faces.lifecycle.processvalidationsphase.execute(processvalidationsphase.java:76) @ com.sun.faces.lifecycle.phase.dophase(phase.java:101) @ com.sun.faces.lifecycle.lifecycleimpl.execute(lifecycleimpl.java:118) @ javax.faces.webapp.facesservlet.service(facesservlet.java:310) @ org.apache.catalina.core.applicationfilterchain.servletservice(applicationfilterchain.java:427) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:333) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:214) @ com.bmw.verdict.web.fupload.uploadfilter.dofilter(uploadfilter.java:70) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:246) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:214) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:313) @ org.apache.catalina.core.standardcontextvalve.invokeinternal(standardcontextvalve.java:287) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:218) @ org.apache.catalina.core.standardpipeline.doinvoke(standardpipeline.java:648) @ org.apache.catalina.core.standardpipeline.doinvoke(standardpipeline.java:593) @ com.sun.enterprise.web.webpipeline.invoke(webpipeline.java:94) @ com.sun.enterprise.web.pesessionlockingstandardpipeline.invoke(pesessionlockingstandardpipeline.java:98) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:222) @ org.apache.catalina.core.standardpipeline.doinvoke(standardpipeline.java:648) @ org.apache.catalina.core.standardpipeline.doinvoke(standardpipeline.java:593) @ org.apache.catalina.core.standardpipeline.invoke(standardpipeline.java:587) @ org.apache.catalina.core.containerbase.invoke(containerbase.java:1093) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:166) @ org.apache.catalina.core.standardpipeline.doinvoke(standardpipeline.java:648) @ org.apache.catalina.core.standardpipeline.doinvoke(standardpipeline.java:593) @ org.apache.catalina.core.standardpipeline.invoke(standardpipeline.java:587) @ org.apache.catalina.core.containerbase.invoke(containerbase.java:1093) @ org.apache.coyote.tomcat5.coyoteadapter.service(coyoteadapter.java:291) @ com.sun.enterprise.web.connector.grizzly.defaultprocessortask.invokeadapter(defaultprocessortask.java:666) @ com.sun.enterprise.web.connector.grizzly.defaultprocessortask.doprocess(defaultprocessortask.java:597) @ com.sun.enterprise.web.connector.grizzly.defaultprocessortask.process(defaultprocessortask.java:872) @ com.sun.enterprise.web.connector.grizzly.defaultreadtask.executeprocessortask(defaultreadtask.java:341) @ com.sun.enterprise.web.connector.grizzly.defaultreadtask.dotask(defaultreadtask.java:263) @ com.sun.enterprise.web.connector.grizzly.defaultreadtask.dotask(defaultreadtask.java:214) @ com.sun.enterprise.web.portunif.portunificationpipeline$putask.dotask(portunificationpipeline.java:382) @ com.sun.enterprise.web.connector.grizzly.taskbase.run(taskbase.java:264) @ com.sun.enterprise.web.connector.grizzly.ssl.sslworkerthread.run(sslworkerthread.java:106)
according documentation datatable component should work list data type. i'm not getting managed bean @ all, guess goes wrong before in life cycle. going wrong here? in advance.
regards, al
ok, solved. used secletbooleancheckbox instead.
Comments
Post a Comment