Olá pessoal,
Seguinte vou tentar ilustra meu problema. Estou montando um exemplinho básico para mim aprender …
Seguinte tenho objeto Person(username,password,age,description) um obejto contato (typePhone, ddd,phone) que se relaciona em 1:n com person …
Meu backbean até o momento está assim:
[code]public class BackBeanData {
private Person person;
private Collection contacts = new ArrayList();
public BackBeanData(){
Contact contact = new Contact();
contact.setTypePhone("celular");
contact.setDdd(11);
contact.setPhone("86748116");
contact.setPerson(person);
contacts.add(contact);
}
public String save() {
try {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("meindica");
EntityManager manager = factory.createEntityManager();
EntityTransaction tx = manager.getTransaction();
tx.begin();
Contact contact2 = new Contact();
contact2.setTypePhone("residencial");
contact2.setDdd(11);
contact2.setPhone("55236094");
contact2.setPerson(person);
contacts.add(contact2);
person.setContact(contacts);
manager.persist(person);
tx.commit();
return "ok";
}
catch (Exception e) {
return "error";
}
}
/* GETTERS AND SETTERS */
}
[/code]
Bom como tenho um relacionamento de 1:n entre Person e Contact na minha página com o JSF eu queria receber esses dados … Ou seja … Quero fazer um JavaScript que fique repetindo os campos do formulario com informações de contato … E que esses campos preenchidos se tornem parte do minha collection contacts …
Bom meu faces-config.xml é o seguinte :
[code]
person
br.com.meindica.entity.Person
session
name
<Here your name>
<managed-bean>
<managed-bean-name>contacts</managed-bean-name>
<managed-bean-class>java.util.ArrayList</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<list-entries>
<value-class>java.util.ArrayList</value-class>
<null-value />
</list-entries>
</managed-bean>
<managed-bean>
<managed-bean-name>backBeanData</managed-bean-name>
<managed-bean-class>br.com.meindica.backbean.BackBeanData</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>contacts</property-name>
<value>#{contacts}</value>
</managed-property>
</managed-bean>
[/code]
E por enquanto meu html com os facelets é o seguinte:
[code]<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f” %>
<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h” %>
Person data
<h2>Contact data</h2>
<h:panelGrid columns="2">
<h:outputLabel value="Type Phone: " for="type_fone" /><h:inputText value="#{contacts[2].typePhone}" id="type_fone" />
<h:outputLabel value="DDD: " for="ddd" /><h:inputText value="#{contacts[2].ddd}" id="ddd" />
<h:outputLabel value="Phone: " for="Phone" /><h:inputText value="#{contacts[2].phone}" id="Phone" />
<h:commandButton action="#{backBeanData.save}" value="Save" />
</h:panelGrid>
</h:form>
</f:view>
[/code]
Mas quando eu executo esse código recebo a seguinte stack
[quote]May 7, 2008 1:28:22 PM com.sun.faces.lifecycle.ProcessValidationsPhase execute
WARNING: /signup.jsp(24,69) ‘#{contacts[2].typePhone}’ Target Unreachable, ‘2’ returned null
org.apache.jasper.el.JspPropertyNotFoundException: /signup.jsp(24,69) ‘#{contacts[2].typePhone}’ Target Unreachable, ‘2’ returned null
at org.apache.jasper.el.JspValueExpression.getType(JspValueExpression.java:61)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:129)
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:936)
at javax.faces.component.UIInput.validate(UIInput.java:861)
at javax.faces.component.UIInput.executeValidate(UIInput.java:1071)
at javax.faces.component.UIInput.processValidators(UIInput.java:663)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1040)
at javax.faces.component.UIForm.processValidators(UIForm.java:229)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1040)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:667)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
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 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:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
May 7, 2008 1:28:22 PM com.sun.faces.lifecycle.LifecycleImpl phase
WARNING: executePhase(PROCESS_VALIDATIONS 3,com.sun.faces.context.FacesContextImpl@1958cc2) threw exception
javax.faces.FacesException: /signup.jsp(24,69) ‘#{contacts[2].typePhone}’ Target Unreachable, ‘2’ returned null
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:108)
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 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:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.jasper.el.JspPropertyNotFoundException: /signup.jsp(24,69) ‘#{contacts[2].typePhone}’ Target Unreachable, ‘2’ returned null
at org.apache.jasper.el.JspValueExpression.getType(JspValueExpression.java:61)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:129)
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:936)
at javax.faces.component.UIInput.validate(UIInput.java:861)
at javax.faces.component.UIInput.executeValidate(UIInput.java:1071)
at javax.faces.component.UIInput.processValidators(UIInput.java:663)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1040)
at javax.faces.component.UIForm.processValidators(UIForm.java:229)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1040)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:667)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
… 15 more
[/quote]
Bom pessoal espero que alguém possa me ajudar fico muito grato