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
<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:
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;
}
}
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:
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)
Como posso resolver esse problema?
Obrigado