Objeto Nulo [RESOLVIDO]

4 respostas
vcsmetallica

Galera,

Estou com esse problema e não estou sabendo como resolver

AVISO: /gerenciar/usuario.xhtml @55,101 value="#{usuarioControle.usuario.nome}": Target Unreachable, 'null' returned null
javax.el.PropertyNotFoundException: /gerenciar/usuario.xhtml @55,101 value="#{usuarioControle.usuario.nome}": Target Unreachable, 'null' returned null
	at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)
	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95)
	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.UIForm.processValidators(UIForm.java:253)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
	at org.primefaces.component.dialog.Dialog.processValidators(Dialog.java:318)
	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)

Abaixo o meu controle e meu xhtml

usuario.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.prime.com.tr/ui"
                template="./../templates/template.xhtml">

    <ui:define name="content">

        <h:outputLabel value="Gerenciar Usuario" style="font-size: 25px"/> 

        <h:form prependId="false">
            <!-- parte da Tabela que vai listar os registros -->
            <p:dataTable id="tabela" var="usuario" value="#{usuarioControle.listarUsuarios}" selection="#{usuarioControle.usuario}" selectionMode="single" paginator="true" rows="10">
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Nome" />
                    </f:facet>
                    <h:outputText value="#{usuario.nome}" />
                </p:column>
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Descrição"/>
                    </f:facet>
                    <h:outputText value="#{usuario.descricao}"/>
                </p:column>
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Login"/>
                    </f:facet>
                    <h:outputText value="#{usuario.login}"/>
                </p:column>
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Senha"/>
                    </f:facet>
                    <h:outputText value="#{usuario.senha}"/>
                </p:column>
                <f:facet name="footer">
                    <p:commandButton image="ui-icon ui-icon-document"  value="Novo Usuario" actionListener="#{usuarioControle.prepararAdicionarUsuario}" update="infosUsuario" oncomplete="dialogGerUsuario.show()"/>  
                    <p:commandButton  image="ui-icon ui-icon-pencil"  
                                      value="Alterar" update="infosUsuario" oncomplete="dialogGerUsuario.show()"/>  
                    <p:commandButton image="ui-icon ui-icon-trash" actionListener="#{usuarioControle.excluir}" value="Excluir" update="tabela"/>
                </f:facet>  
            </p:dataTable>
        </h:form>

        <!-- Parte do codigo que edita e grava novos registros -->
        <p:dialog header="Gerencia de Usuario" widgetVar="dialogGerUsuario"  resizable="false" modal="true" showEffect="slide" width="500">
            <h:form prependId="false">
                <h:panelGrid id="infosUsuario" columns="2" style="margin-bottom:10px">

                    <h:outputLabel for="nome" value="Nome:" />
                    <h:inputText id="nome" value="#{usuarioControle.usuario.nome}" required="true"/>

                    <h:outputLabel for="descricao" value="Descrição:" />
                    <h:inputText id="descricao" value="#{usuarioControle.usuario.descricao}" required="true"/>
                    
                    <h:outputLabel for="login" value="Login:" />
                    <h:inputText id="login" value="#{usuarioControle.usuario.login}" required="true"/>
                    
                    <h:outputLabel for="senha" value="Senha:" />
                    <h:inputText id="senha" value="#{usuarioControle.usuario.senha}" required="true"/>
                    
                    <f:facet name="footer">
                        <h:panelGroup style="display:block; text-align:center">
                            <p:commandButton update="tabela" oncomplete="dialogGerUsuario.hide();" actionListener="#{usuarioControle.alterarOuSalvar}" value="Salvar"/>
                            <p:commandButton update="tabela" oncomplete="dialogGerUsuario.hide();" value="Cancelar"/>
                        </h:panelGroup>
                    </f:facet>
                </h:panelGrid>
            </h:form>
        </p:dialog>

    </ui:define>
</ui:composition>

UsuarioControle.java

@ManagedBean(name = "usuarioControle")
@SessionScoped
public class UsuarioControle  implements Serializable{
    
    private Usuario usuario;
    private boolean novoCadastro = false;

    public UsuarioControle() {
        
    }

    
    public void prepararAdicionarUsuario(ActionEvent actionEvent) {
        usuario = new Usuario();
        novoCadastro = true;
    }

    public List<Usuario> getListarUsuarios() {
        try {
            List<Usuario> lista = new UsuarioDAO().buscarTodosOsRegistros();
            return lista;
        } catch (Exception ex) {
            addError("Gerenciar Usuario", ex.getMessage());
        }
        return null;
    }

    public void alterarOuSalvar(ActionEvent actionEvent) {
        try {
            UsuarioDAO dao = new UsuarioDAO();
            if (novoCadastro) {
                dao.salvar(usuario);
                novoCadastro = false;
                addInfo("Gerenciar Usuario", "Usuario inserido com sucesso.");
            } else {
                dao.editar(usuario);
                addInfo("Gerenciar Usuario", "Usuario alterado com sucesso.");
            }
        } catch (Exception ex) {
            addError("Gerenciar Usuario", "Usuario não pode ser alterado ou salvo:" + ex.getMessage());
        }

    }

    public void excluir(ActionEvent actionEvent) {
        try {
            if (null != usuario) {
                UsuarioDAO dao = new UsuarioDAO();
                dao.excluir(usuario.getIdUsuario());
                addInfo("Gerenciar Usuario", "Usuario excluido com sucesso.");
            }else{
                addWarn("Gerenciar Usuario", "Nenhum cargo foi selecionado.");
            }
        } catch (Exception ex) {
            addError("Gerenciar Usuario", "Usuario não pode ser excluido:" + ex.getMessage());
        }
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

   
}

o foda é que eu tenho uma outra aplicação que funciona, copie e colei e começou a dar esse erro.

Att

4 Respostas

A

quando está pagina está sendo carregada o objeto usuario do bean da null, tenta instacia-lo antes de abrir essa pagina.

t+

Arizoide

Tente fazer um Lazy no get do objeto.

jlsoliveirajr

instancia usuario no construtor

vcsmetallica

Estranho,

Por que em outra aplicação minha funciona sem instanciar no construtor.
Mas blza, coloquei no construtor e funcionou.

Valeu galera.

Criado 27 de setembro de 2011
Ultima resposta 27 de set. de 2011
Respostas 4
Participantes 4