Olá Pessoal,
Seguinte tenho um formulario JSF onde tenho várias vezes o mesmo objeto Contact(“TypeFone”,“DDD”,“Telefone”) e quero tornor isso uma ArrayList<Contatc> para meu back bean …
Meu faces-config está assim:
<faces-config>
<managed-bean>
<managed-bean-name>person</managed-bean-name>
<managed-bean-class>br.com.meindica.entitybeans.Person</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>contact</managed-bean-name>
<managed-bean-class>br.com.meindica.entitybeans.Contact</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>personBeans</managed-bean-name>
<managed-bean-class>br.com.meindica.facesbeans.PersonFacesBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>person</property-name>
<value>#{person}</value>
</managed-property>
<managed-property>
<property-name>contact</property-name>
<value>#{contact}</value>
</managed-property>
</managed-bean>
</faces-config>
E o meu back bean está assim:
[code]public class PersonFacesBean {
private Person person;
private Address address;
private List<Contact> contact = new ArrayList<Contact>();
private static Logger log;
public PersonFacesBean() {
log = Logger.getLogger(PersonFacesBean.class);
}
public String add() {
try {
BeanPerson bo = new BeanPerson();
bo.save( person , address, contact );
return "success";
}
catch (NewUserException userEx){
log.warn("Erro em: " + userEx.getMessage());
return "failure";
}
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public List<Contact> getContact() {
return contact;
}
public void setContact(List<Contact> contact) {
this.contact = contact;
}
}[/code]
E o meu facelets :
<h:outputLabel value="Telefone: " for="fone" />
<h:selectOneMenu value="#{contact.typeFone}">
<f:selectItem itemLabel="Residencial" itemValue="residencial" />
<f:selectItem itemLabel="Celular" itemValue="celular" />
<f:selectItem itemLabel="Comercial" itemValue="comercial" />
</h:selectOneMenu>
<h:inputText value="#{contact.prefixFone}" id="prefixFone" size="2" />
<h:inputText value="#{contact.fone}" id="fone" />
<h:message for="fone"/>
<h:commandButton action="#{personBeans.add}" value="Adicionar" />
Mas quando envio o formulario ele dá o seguinte erro:
[quote]SEVERE: Servlet.service() for servlet Faces Servlet threw exception
javax.faces.FacesException: Error performing conversion of value br.com.meindica.entitybeans.Contact@1d7fc31 of type class br.com.meindica.entitybeans.Contact to type interface java.util.List for managed bean personBeans.
at com.sun.faces.config.ManagedBeanFactoryImpl.getConvertedValueConsideringPrimitives(ManagedBeanFactoryImpl.java:991)
at com.sun.faces.config.ManagedBeanFactoryImpl.setPropertiesIntoBean(ManagedBeanFactoryImpl.java:664)
at com.sun.faces.config.ManagedBeanFactoryImpl.newInstance(ManagedBeanFactoryImpl.java:345)
at com.sun.faces.application.ApplicationAssociate.createAndMaybeStoreManagedBeans(ApplicationAssociate.java:521)
at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:83)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:58)
at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:45)
at org.apache.el.parser.AstValue.getTarget(AstValue.java:42)
at org.apache.el.parser.AstValue.invoke(AstValue.java:127)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:95)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:450)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:759)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:266)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:132)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119)
at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)[/quote]
Como posso resolver esse problema?
Obrigado