Estou criando uma aplicação bem simples de cadastro de contatos para aprender mais sobre como se trabalhrar com Java.
Mas infelizmente não estou conseguindo realizar uma tarefa basica. Preciso apagar os campos de um formulario logo depois que persisto ele no banco no botão “Gravar”.
Andei pesquisando aqui no forum, ams esta um pouco confuso e não estou conseguindo fazer “funfar”.
Segue as classe abaixo com alguns comentarios:[/b]
crie um entidade para Cliente, com isso vc vai remover esse atributo do cliente e passar para essa entidade. depois disso, vc vai ter um atributo referente ao objeto Cliente no seu ManagedBean, ai toda vez que vc clicar no botão gravar, so dar new no objeto cliente e update no formulario.
@ManagedBean
@RequestScoped
public class ControleCliente {
private Contato contato;
// esse metodo vc vai chamar para abrir sua pagina
public String init(){
contato = new Contato();
return "contato.xhtml";
}
public void gravarFormulario() {
ContatoHelper grvcontato = new ContatoHelper();
grvcontato.gravarContato(contato);
contato = new Contato();
}
public Contato getContato(){
return contato;
}
public void setContato(Contato contato){
this.contato = contato;
}
}
31/10/2011 18:48:06 com.sun.faces.lifecycle.ProcessValidationsPhase execute
AVISO: /index.xhtml @19,146 value="#{controleCliente.contato.nome}": Target Unreachable, 'contato' returned null
javax.el.PropertyNotFoundException: /index.xhtml @19,146 value="#{controleCliente.contato.nome}": Target Unreachable, 'contato' returned null
at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)
at org.primefaces.component.inputtext.InputTextRenderer.getConvertedValue(InputTextRenderer.java:113)
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030)
at javax.faces.component.UIInput.validate(UIInput.java:960)
at javax.faces.component.UIInput.executeValidate(UIInput.java:1233)
at javax.faces.component.UIInput.processValidators(UIInput.java:698)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIForm.processValidators(UIForm.java:253)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1172)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
como eu te falei, ta vendo esse metodo init, antes de vc entrar nessa pagina, vc vai ter que chama-lo
esse erro ta ocorrendo pq a variavel contato ta null, nao foi inicializada.
1 - quando vc entrou na pagina, foi chamado o construtor do seu ManagedBean, que deu um new na variavel contato.
2 - qdo vc clicou na botao, ele pegou o variavel contato preechida, gravou, depois de gravar, dei um new novamente para limpar o formulario e na pagina o botao tem a opcao de update no form, que vai fazer isso com ajax.