jsf - Pick List showing error Property 'name' not found on type java.lang.String -
i using primefaces pick list , getting error question stated. posting problem relative code. xhtml page
<p:row> <p:column> <p:outputlabel style="font-size:12px;" styleclass="labelcaption" for="bank" value="bank(s) name :" /> </p:column> <p:column colspan="3"> <p:picklist id="bank" style="font-size:12px;" required="true" value="#{eipoirbean.dualbanks}" var="dbanks" itemlabel="#{dbanks.name}" itemvalue="#dbanks}"> <f:facet name="sourcecaption">available banks</f:facet> <f:facet name="targetcaption">selected banks</f:facet> </p:picklist> </p:column> </p:row> <p:row> <p:column colspan="4" align="left" styleclass="panelgridfooter ui-widget-header"> <p:commandbutton id="submit" ajax="false" style="font-size:12px;" value="save" action="#{eipoirbean.submit}" icon="ui-icon-check"> </p:commandbutton> <p:commandbutton icon="ui-icon-arrowreturnthick-1-w" style="font-size:12px;" value="cancel" action="listmygrouplifeclaim?faces-redirect=true" immediate="true" global="true"> </p:commandbutton> </p:column> </p:row> bean is
@viewscoped @managedbean(name = "eipoirbean") public class investorregistrationbean implements serializable{ private investorsetupbusinessobj businessobj = new investorsetupbusinessobj(); private duallistmodel<bank> dualbanks; public duallistmodel<bank> getdualbanks() { return dualbanks; } public void setdualbanks(duallistmodel<bank> dualbanks) { this.dualbanks = dualbanks; } public investorsetupbusinessobj getbusinessobj() { return businessobj; } public void setbusinessobj(investorsetupbusinessobj businessobj) { this.businessobj = businessobj; } public investorregistrationbean(){ duallist_of_banks(); } public void duallist_of_banks(){ dualbanks = new duallistmodel<bank>(businessobj.getinvestor().getbanks(), new arraylist<bank>()); } public void submit() { businessobj.getinvestor().setbanks(dualbanks.gettarget()); businessobj.save(); } } business object is
public class investorsetupbusinessobj extends basebusinessobject { private investor investor= new investor(); private investorrequestinvoker invoker = new investorrequestinvoker(this); private list<map<string,object>> datagrid; public investor getinvestor() { return investor; } public void setinvestor(investor investor) { this.investor = investor; } public investorrequestinvoker getinvoker() { return invoker; } public void setinvoker(investorrequestinvoker invoker) { this.invoker = invoker; } public investorsetupbusinessobj(){ getinvestor().setbanks(invoker.selectallbank()); } } bank.java class
public class bank implements serializable { private static final long serialversionuid = 1l; private long id; private string name; private list<bankbranch> bankbranches; private list<investor> investors; private list<investorjointholder> investorjointholders; private list<pobank> pobanks; private list<posubscription> posubscriptions; public bank() { } @id public long getid() { return this.id; } public void setid(long id) { this.id = id; } public string getname() { return this.name; } public void setname(string name) { this.name = name; } //bi-directional many-to-one association bankbranch @onetomany(mappedby="bank") public list<bankbranch> getbankbranches() { return this.bankbranches; } public void setbankbranches(list<bankbranch> bankbranches) { this.bankbranches = bankbranches; } public bankbranch addbankbranches(bankbranch bankbranches) { getbankbranches().add(bankbranches); bankbranches.setbank(this); return bankbranches; } public bankbranch removebankbranches(bankbranch bankbranches) { getbankbranches().remove(bankbranches); bankbranches.setbank(null); return bankbranches; } //bi-directional many-to-many association investor @manytomany(mappedby="banks") public list<investor> getinvestors() { return this.investors; } public void setinvestors(list<investor> investors) { this.investors = investors; } //bi-directional many-to-one association investorjointholder @onetomany(mappedby="bank") public list<investorjointholder> getinvestorjointholders() { return this.investorjointholders; } public void setinvestorjointholders(list<investorjointholder> investorjointholders) { this.investorjointholders = investorjointholders; } public investorjointholder addinvestorjointholders(investorjointholder investorjointholders) { getinvestorjointholders().add(investorjointholders); investorjointholders.setbank(this); return investorjointholders; } public investorjointholder removeinvestorjointholders(investorjointholder investorjointholders) { getinvestorjointholders().remove(investorjointholders); investorjointholders.setbank(null); return investorjointholders; } //bi-directional many-to-one association pobank @onetomany(mappedby="bank") public list<pobank> getpobanks() { return this.pobanks; } public void setpobanks(list<pobank> pobanks) { this.pobanks = pobanks; } public pobank addpobanks(pobank pobanks) { getpobanks().add(pobanks); pobanks.setbank(this); return pobanks; } public pobank removepobanks(pobank pobanks) { getpobanks().remove(pobanks); pobanks.setbank(null); return pobanks; } //bi-directional many-to-many association posubscription @manytomany(mappedby="banks") public list<posubscription> getposubscriptions() { return this.posubscriptions; } public void setposubscriptions(list<posubscription> posubscriptions) { this.posubscriptions = posubscriptions; } }
my pick list populating correctly above method public investorsetupbusinessobj() when select 1 bank , save it, gives following exception. appreciated.
stack trace is
javax.el.propertynotfoundexception: /eipo/investorregistration.xhtml @367,59 itemlabel="#{dbanks.name}": property 'name' not found on type java.lang.string @ com.sun.faces.facelets.el.tagvalueexpression.getvalue(tagvalueexpression.java:111) @ javax.faces.component.componentstatehelper.eval(componentstatehelper.java:194) @ org.primefaces.component.picklist.picklist.getitemlabel(picklist.java:130) @ org.primefaces.component.picklist.picklistrenderer.encodeoptions(picklistrenderer.java:226) @ org.primefaces.component.picklist.picklistrenderer.encodelist(picklistrenderer.java:192) @ org.primefaces.component.picklist.picklistrenderer.encodemarkup(picklistrenderer.java:86) @ org.primefaces.component.picklist.picklistrenderer.encodeend(picklistrenderer.java:59) @ javax.faces.component.uicomponentbase.encodeend(uicomponentbase.java:877) @ javax.faces.component.uicomponent.encodeall(uicomponent.java:1826) @ javax.faces.component.uicomponent.encodeall(uicomponent.java:1822) @ org.primefaces.component.panelgrid.panelgridrenderer.encoderow(panelgridrenderer.java:148) @ org.primefaces.component.panelgrid.panelgridrenderer.encodestaticbody(panelgridrenderer.java:110) @ org.primefaces.component.panelgrid.panelgridrenderer.encodebody(panelgridrenderer.java:63) @ org.primefaces.component.panelgrid.panelgridrenderer.encodeend(panelgridrenderer.java:49) @ javax.faces.component.uicomponentbase.encodeend(uicomponentbase.java:877) @ org.primefaces.renderkit.corerenderer.renderchild(corerenderer.java:74) @ org.primefaces.renderkit.corerenderer.renderchildren(corerenderer.java:57) @ org.primefaces.component.panel.panelrenderer.encodecontent(panelrenderer.java:204) @ org.primefaces.component.panel.panelrenderer.encodemarkup(panelrenderer.java:121) @ org.primefaces.component.panel.panelrenderer.encodeend(panelrenderer.java:58) @ javax.faces.component.uicomponentbase.encodeend(uicomponentbase.java:877) @ javax.faces.component.uicomponent.encodeall(uicomponent.java:1826) @ javax.faces.render.renderer.encodechildren(renderer.java:168) @ javax.faces.component.uicomponentbase.encodechildren(uicomponentbase.java:847) @ javax.faces.component.uicomponent.encodeall(uicomponent.java:1819) @ javax.faces.component.uicomponent.encodeall(uicomponent.java:1822) @ javax.faces.component.uicomponent.encodeall(uicomponent.java:1822) @ com.sun.faces.application.view.faceletviewhandlingstrategy.renderview(faceletviewhandlingstrategy.java:447) @ com.sun.faces.application.view.multiviewhandler.renderview(multiviewhandler.java:125) @ com.sun.faces.lifecycle.renderresponsephase.execute(renderresponsephase.java:120) @ 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:594) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:305) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:210) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:222) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:123) @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:472) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:171) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:99) @ org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:947) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:118) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:408) @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1009) @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:589) @ org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.java:312) @ java.util.concurrent.threadpoolexecutor.runworker(unknown source) @ java.util.concurrent.threadpoolexecutor$worker.run(unknown source) @ java.lang.thread.run(unknown source)
you must define converter make work, necessary guided in primefaces manual when using picklist :
<p:picklist ... var="dbanks" itemvalue="#{dbanks}" converter="bankconverter" > take here : custom converter in jsf 2.0
Comments
Post a Comment