Caros amigos do forum… estou com o seguinte erro:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: /funcionario.xhtml @113,113 value="#{managedBeanFuncionario.funcionario.usuario.email}": Target Unreachable, ‘usuario’ returned null
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
root cause
javax.el.PropertyNotFoundException: /funcionario.xhtml @113,113 value="#{managedBeanFuncionario.funcionario.usuario.email}": Target Unreachable, ‘usuario’ returned null
com.sun.facelets.el.TagValueExpression.getType(TagValueExpression.java:62)
com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:81)
javax.faces.component.UIInput.getConvertedValue(UIInput.java:934)
javax.faces.component.UIInput.validate(UIInput.java:860)
javax.faces.component.UIInput.executeValidate(UIInput.java:1065)
javax.faces.component.UIInput.processValidators(UIInput.java:666)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
org.ajax4jsf.component.UIAjaxForm.processValidators(UIAjaxForm.java:82)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
javax.faces.component.UIInput.processValidators(UIInput.java:664)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
org.ajax4jsf.component.AjaxViewRoot$3.invokeContextCallback(AjaxViewRoot.java:447)
org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:240)
org.ajax4jsf.component.AjaxViewRoot.processValidators(AjaxViewRoot.java:463)
com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
Meu MB e minha classes estão assim:
package controle;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import persistencia.EnderecoDao;
import persistencia.FuncionarioDao;
import persistencia.UsuarioDao;
import entidade.Funcionario;
public class ManagedBeanFuncionario implements Serializable {
private static final long serialVersionUID = 1L;
private List<Funcionario> lista = new ArrayList<Funcionario>();
private Funcionario funcionario = null;
public ManagedBeanFuncionario() {
if(this.funcionario == null){
this.funcionario = new Funcionario();
}
}
public List<Funcionario> getLista() throws Exception {
for(Object obj : new FuncionarioDao().lista(Funcionario.class)){
lista.add((Funcionario) obj);
}
return lista;
}
public void setLista(List<Funcionario> lista) {
this.lista = lista;
}
public Funcionario getFuncionario() {
return funcionario;
}
public void setFuncionario(Funcionario funcionario) {
this.funcionario = funcionario;
}
public void recuperaFuncionario() {
this.funcionario = (Funcionario) ((HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest()).getAttribute("dados");
}
public void incluir() throws Exception {
FacesContext fc = FacesContext.getCurrentInstance();
String mensagem = null;
boolean flag = true;
if(this.funcionario.getNome().trim().length() <= 0 || this.funcionario.getNome().trim() == null){
mensagem = "Digite o nome do funcionário";
this.funcionario.setNome(this.funcionario.getNome().trim());
flag = false;
fc.addMessage("formCadastroFuncionario", new FacesMessage(mensagem));
}
if(this.funcionario.getSexo().trim().length() <= 0 || this.funcionario.getSexo().trim() == null){
mensagem = "Selecione o sexo do funcionário";
flag = false;
fc.addMessage("formCadastroFuncionario", new FacesMessage(mensagem));
}
if(this.funcionario.getDataNascimento() == null){
mensagem = "Indique a data de nascimento do funcionário";
flag = false;
fc.addMessage("formCadastroFuncionario", new FacesMessage(mensagem));
}
if(this.funcionario.getEndereco().getEndereco().trim().length() <= 0 || this.funcionario.getEndereco().getEndereco().trim() == null){
mensagem = "Digite o endereço do funcionário";
this.funcionario.getEndereco().setEndereco(funcionario.getEndereco().getEndereco().trim());
flag = false;
fc.addMessage("formCadastroFuncionario", new FacesMessage(mensagem));
}
if(this.funcionario.getUsuario().getLogin().trim().length() <= 0 || this.funcionario.getUsuario().getLogin().trim() == null){
mensagem = "O funcionário deve ter um login de acesso";
this.funcionario.getUsuario().setLogin(funcionario.getUsuario().getLogin().trim());
flag = false;
fc.addMessage("formCadastroFuncionario", new FacesMessage(mensagem));
}else{
UsuarioDao usuarioDao = new UsuarioDao();
if(usuarioDao.verificaLogin(this.funcionario.getUsuario().getLogin().trim())){
mensagem = "login já cadastrado";
flag = false;
fc.addMessage("formCadastroFuncionario", new FacesMessage(mensagem));
}
}
if(this.funcionario.getUsuario().getPerfil() == 0){
mensagem = "Escolha o perfil de acesso do funcionário";
flag = false;
fc.addMessage("formCadastroFuncionario", new FacesMessage(mensagem));
}
if(flag){
EnderecoDao enderecoDao = new EnderecoDao();
enderecoDao.save(this.funcionario.getEndereco());
this.funcionario.getUsuario().setSenha("sistemaqf");
UsuarioDao usuarioDao = new UsuarioDao();
usuarioDao.save(this.funcionario.getUsuario());
FuncionarioDao funcionarioDao = new FuncionarioDao();
funcionarioDao.save(this.funcionario);
}
}
public void alterar() {
}
public void excluir() {
}
public void buscaNome() {
}
}
package entidade;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="funcionario")
public class Funcionario extends Pessoa implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(length=10)
private int idFuncionario;
public Funcionario() {
this.endereco = new Endereco();
this.usuario = new Usuario();
}
public int getIdFuncionario() {
return idFuncionario;
}
public void setIdFuncionario(int idFuncionario) {
this.idFuncionario = idFuncionario;
}
}
Como podem ver, no construtor de Funcionário eu instacio Usuario e Endereço, sendo assim eles ñ estão nulos. Meu web.xml está assim:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>sistemaQualityFisio</display-name>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.sqf</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>blueSky</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
<param-value>com.sun.facelets.FaceletViewHandler</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<display-name>RichFaces Filter</display-name>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>richfaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
</web-app>
Se alguém puder dar uma luz de como resolver isso agradeço muito… o erro corre quando o método incluir é chamado