Bom dia, estou com alguns problemas ao tentar usar JSF.
Segue a minha página JSP
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@taglib
uri="http://java.sun.com/jsf/html" prefix="h"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Incluir Visitante</title>
</head>
<body>
<f:view>
<h:form>
<h:outputText value="Cadastro de Visitantes"></h:outputText>
</br>
Nome <h:inputText value="#{visitante.nome}"></h:inputText></br>
E-mail <h:inputText value="#{visitante.email}"></h:inputText></br>
Data de Nascimento <h:inputText value="#{visitante.dataNascimento}"></h:inputText></br>
Profissão <h:inputText value="#{visitante.profissao}"></h:inputText></br>
Recebe Informativo <h:inputText value="#{visitante.recebeInformativo}"></h:inputText></br>
DDD MgrVisitante <h:inputText value="#{telefone.ddd}"></h:inputText></br>
Numero MgrVisitante <h:inputText value="#{telefone.numero}"></h:inputText></br>
Tipo MgrVisitante <h:inputText value="#{telefone.tipo}"></h:inputText></br>
Logradouro <h:inputText value="#{endereco.logradouro}"></h:inputText></br>
Número <h:inputText value="#{endereco.numero}"></h:inputText></br>
Complemento <h:inputText value="#{endereco.complemento}"></h:inputText></br>
CEP <h:inputText value="#{endereco.cep}"></h:inputText></br>
Cidade <h:inputText value="#{endereco.cidade}"></h:inputText></br>
UF <h:inputText value="#{endereco.uf}"></h:inputText></br></br>
<h:commandButton value="addVisitante" action="#{visitante.addVisitante}"/>
</h:form>
</f:view>
</body>
</html>
Então, eu tenho três beans> telefone, endereco e visitante.
Segue a minha classe MgrVisitante, com o método addVisitante que o botão "chama".
package application;
import domain.Endereco;
import domain.Telefone;
import domain.Visitante;
public class MgrVisitante {
private Endereco endereco;
private Visitante visitante;
private Telefone telefone;
public Endereco getEndereco() {
return endereco;
}
public void setEndereco(Endereco endereco) {
this.endereco = endereco;
}
public Visitante getVisitante() {
return visitante;
}
public void setVisitante(Visitante visitante) {
this.visitante = visitante;
}
public Telefone getTelefone() {
return telefone;
}
public void setTelefone(Telefone telefone) {
this.telefone = telefone;
}
public String addVisitante() {
String action = null;
if (visitante.getNome().length() >= 2
&& telefone.getNumero() > 0
&& endereco.getLogradouro().length() >=4) {
action = "addActionTrue";
}
else action = "addActionFalse";
return action;
}
}
Como podem ver, se tem um objeto visitante com nome com mais de 2 caracteres e numero de telefone > 0 e endereco com logradouro > 4 vai para a página de sucesso (addActionTrue).
Fiz o mapeamento dos beans e do management bean tudo ok, está funcionando.
Porém, quando clico no botão SUBMIT aparece uma exception.
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
root cause
java.lang.NullPointerException
application.MgrVisitante.addVisitante(MgrVisitante.java:40)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.apache.el.parser.AstValue.invoke(AstValue.java:131)
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:71)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:95)
javax.faces.component.UICommand.broadcast(UICommand.java:384)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:452)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:764)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:266)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:132)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
Alguém pode me dar uma Ajuda??? Não consigo mandar os três objetos "populados" para o management bean???
Uma outra dúvida, estou separando os pacotes da minha aplicação (domain, respository, application), os management beans ficam no pacote application mesmo ou em outro ???
Agradeço a todos!