ObjectListDataProvider retornando null

1 resposta
R

Caros,

Estou fazendo uma aplicação usando JSF, Spring e Hibernate no Netbeans 6.7. Como sou iniciante na tecnologia estou seguindo o Livro do Yuri Marx. A parte de negócios da aplicação parece estar ok, fiz alguns testes das classes DAO e Facade, inserindo, excluindo e consultado no banco. Mas estou encontrando problemas para construir as páginas usando JSF.

Tô fazendo uma tela master/detail onde na primeira aba é possível trabalhar com “Projetos”. Adicionando, Excluindo e Consultando Projetos. Ao tentar fazer a parte de consultas exibindo resultados em uma Table, populada atráves de ObjectListDataProvider encontro algumas “NullPointerException”.

O erro está neste trecho:

public String btnConsultarProjeto_action() {

        getProjetoProvider().obterTodos(getSessionBean1().getUsuarioLogado().getIdUsuario());

        return null;
    }

Stack Trace

SEVERE: java.lang.NullPointerException
javax.faces.el.EvaluationException: java.lang.NullPointerException
        at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:91)
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
        at com.sun.rave.web.ui.appbase.faces.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
        at javax.faces.component.UICommand.broadcast(UICommand.java:383)
        at com.sun.webui.jsf.component.WebuiCommand.broadcast(WebuiCommand.java:160)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
        at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
...

Início do código da página:

import dominio.Projeto;
import facade.ProjetoFacade;
import java.util.ResourceBundle;
import javax.faces.FacesException;
import javax.faces.application.FacesMessage;
import javax.faces.convert.DateTimeConverter;

public class CompletePage extends AbstractPageBean {

    private Projeto projeto;
    private ProjetoFacade projetoFacade;
    private ProjetoProvider projetoProvider;

...

    /**
     * @return the projeto
     */
    public Projeto getProjeto() {
        return projeto;
    }

    /**
     * @param projeto the projeto to set
     */
    public void setProjeto(Projeto projeto) {
        this.projeto = projeto;
    }

    /**
     * @return the projetoFacade
     */
    public ProjetoFacade getProjetoFacade() {
        return projetoFacade;
    }

    /**
     * @param projetoFacade the projetoFacade to set
     */
    public void setProjetoFacade(ProjetoFacade projetoFacade) {
        this.projetoFacade = projetoFacade;
    }

    /**
     * @return the projetoProvider
     */
    public ProjetoProvider getProjetoProvider() {
        return projetoProvider;
    }

    /**
     * @param projetoProvider the projetoProvider to set
     */
    public void setProjetoProvider(ProjetoProvider projetoProvider) {
        this.projetoProvider = projetoProvider;
    }

...

    public String btnConsultarProjeto_action() {
r
        getProjetoProvider().obterTodos(getSessionBean1().getUsuarioLogado().getIdUsuario()); //Testar se está pegando todos

        return null;
    }

Projeto Provider

package provider;

import com.sun.data.provider.impl.ObjectListDataProvider;
import dominio.Projeto;
import facade.ProjetoFacade;
import java.util.ArrayList;
import java.util.Date;

/**
 *
 * @author romulo
 */
public class ProjetoProvider extends ObjectListDataProvider {

    private ProjetoFacade projetoFacade;
    private ArrayList projetoList = new ArrayList();

    /** Creates a new instance of ProjetoProvider **/
    public ProjetoProvider() {
        projetoList.add(new Projeto());
        setList(projetoList);
    }

    public void obterTodos(Integer idUsuario) {
        projetoList.clear();
        projetoList.addAll(projetoFacade.obterTodos(idUsuario));
    }

    public void obterPorNome(Integer idUsuario, String nome) {
        projetoList.clear();
        projetoList.addAll(projetoFacade.obterPorNome(idUsuario, nome));
    }

    public void obterPorData(Integer idUsuario, Date data) {
        projetoList.clear();
        projetoList.addAll(projetoFacade.obterPorData(idUsuario, data));
    }

    public ProjetoFacade getProjetoFacade() {
        return projetoFacade;
    }

    public void setProjetoFacade(ProjetoFacade projetoFacade) {
        this.projetoFacade = projetoFacade;
    }

}

Projeto Facade

package facade;

import dao.ProjetoDAO;
import dominio.Projeto;
import java.util.List;
import java.util.Date;
/**
 *
 * @author romulo
 */
public class ProjetoFacade {

    private ProjetoDAO projetoDAO;

    /** Creates a new instance of ProjetoFacade */
    public ProjetoFacade() {
    }

    public Projeto gravar(Projeto projeto) {
        return projetoDAO.gravar(projeto);
    }

    public void excluir(Projeto projeto) {
        projetoDAO.excluir(projeto);
    }

    public Projeto carregar(Integer id) {
        return projetoDAO.carregar(id);
    }

    public List obterTodos(Integer idUsuario) {
        return projetoDAO.obterTodos(idUsuario);
    }

    public List obterPorNome(Integer idUsuario, String nome) {
        return projetoDAO.obterPorNome(idUsuario, nome);
    }

    public List obterPorData(Integer idUsuario, Date data) {
        return projetoDAO.obterPorData(idUsuario, data);
    }

    public ProjetoDAO getProjetoDao() {
        return projetoDAO;
    }

    public void setProjetoDao(ProjetoDAO projetoDAO) {
        this.projetoDAO = projetoDAO;
    }


}

faces-config.xml

<?xml version='1.0' encoding='UTF-8'?>

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config version="1.2" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    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-facesconfig_1_2.xsd">
    <application>
        <variable-resolver>
            org.springframework.web.jsf.DelegatingVariableResolver
        </variable-resolver>
    </application>
    <managed-bean>
        <managed-bean-name>SessionBean1</managed-bean-name>
        <managed-bean-class>epifinder.SessionBean1</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <managed-bean>
        <managed-bean-name>ApplicationBean1</managed-bean-name>
        <managed-bean-class>epifinder.ApplicationBean1</managed-bean-class>
        <managed-bean-scope>application</managed-bean-scope>
    </managed-bean>
    <managed-bean>
        <managed-bean-name>RequestBean1</managed-bean-name>
        <managed-bean-class>epifinder.RequestBean1</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
    <managed-bean>
        <managed-bean-name>LoginPage</managed-bean-name>
        <managed-bean-class>epifinder.LoginPage</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
        <managed-property>
            <property-name>usuario</property-name>
            <value>#{usuario}</value>
        </managed-property>
        <managed-property>
            <property-name>usuarioFacade</property-name>
            <value>#{usuarioFacade}</value>
        </managed-property>

    </managed-bean>
    <managed-bean>
        <managed-bean-name>HeaderPage</managed-bean-name>
        <managed-bean-class>epifinder.HeaderPage</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
    <managed-bean>
        <managed-bean-name>PrincipalPage</managed-bean-name>
        <managed-bean-class>epifinder.PrincipalPage</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
    <navigation-rule>
        <from-view-id>/LoginPage.jsp</from-view-id>
        <navigation-case>
            <from-outcome>paginaPrincipal</from-outcome>
            <to-view-id>/PrincipalPage.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
    <navigation-rule>
        <from-view-id>/PrincipalPage.jsp</from-view-id>
        <navigation-case>
            <from-outcome>paginaLogin</from-outcome>
            <to-view-id>/LoginPage.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
    <managed-bean>
        <managed-bean-name>CompletePage</managed-bean-name>
        <managed-bean-class>epifinder.CompletePage</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>

         <managed-property>
            <property-name>projeto</property-name>
            <value>#{projeto}</value>
        </managed-property>
         <managed-property>
            <property-name>projetoFacade</property-name>
            <value>#{projetoFacade}</value>
        </managed-property>
         <managed-property>
            <property-name>projetoProvider</property-name>
            <value>#{projetoProvider}</value>
        </managed-property>

    </managed-bean>
    <navigation-rule>
        <from-view-id>/CompletePage.jsp</from-view-id>
        <navigation-case>
            <from-outcome>paginaLogin</from-outcome>
            <to-view-id>/LoginPage.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
</faces-config>

webContext.xml

bye<?xml version="1.0" encoding="UTF-8"?>

<!--
    Document   : webContext.xml
    Created on : 24 de Julho de 2011, 00:43
    Author     : romulo
    Description:
        Purpose of the document follows.
-->

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
                           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

       <bean id="projetoProvider" class="provider.ProjetoProvider" scope="session">
           <property name="projetoFacade" ref="projetoFacade" />
       </bean>

</beans>

A página tem uma Table que está setada pra receber dados de projetoProvider, mas sempre que clico no botão para preencher a tabela acontece a exception informada. Alguém tem idéia do que estar errado? Preciso colocar aqui do post mais alguma outra informação para me ajudarem a corrigir o problema?

Muito obrigado,
Rômulo.

1 Resposta

R

Resolvido!. O problema era com o mapeamento dos meus beans.

Criado 10 de agosto de 2011
Ultima resposta 15 de set. de 2011
Respostas 1
Participantes 1