Aplicação jsf, primefaces, não insere no banco de dados retorno nulo

     <h:form>

        <h1>Cadastro Usuário</h1>

        <f:metadata>
            <o:viewParam name="usuario" value="#{cadastroUsuarioBean.usuario}"/>
            <f:event listener="#{cadastroUsuarioBean.inicializar}" type="preRenderView" />
        </f:metadata>

        <p:messages autoUpdate="true" closable="true"/>

        <p:toolbar>
            <p:toolbarGroup>
                <p:button value="Novo" outcome="CadastroUsuario"/>
                <p:commandButton value="Salvar" id="botaoSalvar" action="#{cadastroUsuarioBean.salvar}"  update="@form"/>
            </p:toolbarGroup>
            <p:toolbarGroup align="right">
                <p:button value="pesquisa"/>                    
            </p:toolbarGroup>
        </p:toolbar>

        <p:panelGrid columns="2" id="painel" style=" width: 100%; margin-top: 20px" columnClasses="rotulo, campo" >

            <p:outputLabel value="Nome" for="nome"/>
            <p:inputText id="nome" size="60" maxlength="80" value="#{cadastroUsuarioBean.usuario.nome}"/>

            <p:outputLabel value="E-mail" for="email"/>
            <p:inputText id="email" size="60" maxlength="80" value="#{cadastroUsuarioBean.usuario.email}"/>

            <p:outputLabel value="Senha" for="senha"/>
            <p:password id="senha" value="#{cadastroUsuarioBean.usuario.senha}"/>

            <p:selectOneMenu id="categoria" value="#{cadastroUsuarioBean.grupo}">
                <f:selectItem itemLabel="Selecione a categoria"/>
                <f:selectItems value="#{cadastroUsuarioBean.grupo}" var="grupo"
                               itemValue="#{grupo}" itemLabel="#{grupo.nome}"/>
            </p:selectOneMenu>          

            <p:commandButton value="Adicionar grupo" action="#{cadastroUsuarioBean.adicionarGrupo}"/>
        </p:panelGrid>

cadastroUsuarioBean.java

@Named
@ViewScoped
public class CadastroUsuarioBean implements Serializable {

private static final long serialVersionUID = 0L;

private Usuario usuario;

private Grupo grupoSelecionado;
private List<Grupo> grupo = new ArrayList<Grupo>();

@Inject
private CadastroUsuarioService cadastroUsuarioService;

@Inject
private Grupos grupos;

public CadastroUsuarioBean() {
    limpar();
}

public void inicializar() {
    grupo = grupos.grupos();
    grupoSelecionado = new Grupo();
}

public void limpar() {
    usuario = new Usuario();
    grupo = new ArrayList<Grupo>();
}

public void salvar() {

    adicionarGrupo();
    this.usuario = cadastroUsuarioService.salvar(this.usuario);

    limpar();
    FacesUtil.addInfoMessage("Usuario cadastro com sucesso!");
}

public void adicionarGrupo() {
    this.usuario.getGrupos().add(grupoSelecionado);
}

public Usuario getUsuario() {
    return usuario;
}

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

    if (this.usuario != null) {
        this.grupo = this.usuario.getGrupos();

    }
}

public List<Grupo> getGrupo() {
    return grupo;
}

public Grupo getGrupoSelecionado() {
    return grupoSelecionado;
}

public void setGrupoSelecionado(Grupo grupoSelecionado) {
    this.grupoSelecionado = grupoSelecionado;
}
}

Preciso de Ajuda urgente, desde já agradeço!!!

Verifique se o usuário que você está inserindo está com os dados corretos, se não está nulo.
Verifique se o cadastroUsuarioService não está nulo.

Caso não seja isso, mande o erro para analizarmos.

1 curtida

Olá Renan obrigado pela atenção, tenho no log o seguinte erro:

INFORMAÇÕES: The start() method was called on component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/PedidoVenda]] after start() had already been called. The second call will be ignored.
Hibernate: select grupo0_.id as id1_3_, grupo0_.descricao as descrica2_3_, grupo0_.nome as nome3_3_ from grupo grupo0_
17:02:27.016 [http-bio-8080-exec-8] ERROR com.oliveira.pedidovenda.util.jsf.JsfExceptionHandler - Erro de sistema: /usuarios/CadastroUsuario.xhtml @38,110 value="#{cadastroUsuarioBean.usuario.nome}": Target Unreachable, ‘usuario’ returned null
javax.faces.FacesException: /usuarios/CadastroUsuario.xhtml @38,110 value="#{cadastroUsuarioBean.usuario.nome}": Target Unreachable, ‘usuario’ returned null
jul 13, 2016 5:02:27 PM com.sun.faces.lifecycle.ProcessValidationsPhase execute
ADVERTÊNCIA: /usuarios/CadastroUsuario.xhtml @38,110 value="#{cadastroUsuarioBean.usuario.nome}": Target Unreachable, ‘usuario’ returned null
javax.el.PropertyNotFoundException: /usuarios/CadastroUsuario.xhtml @38,110 value="#{cadastroUsuarioBean.usuario.nome}": Target Unreachable, ‘usuario’ returned null
at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:84) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:144)
at org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:171)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [javax.faces-2.2.8-15.jar:2.2.8-15]
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1045)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) [javax.faces-2.2.8-15.jar:2.2.8-15]
at javax.faces.component.UIInput.validate(UIInput.java:975)
at javax.faces.component.UIInput.executeValidate(UIInput.java:1248)
at javax.faces.component.UIInput.processValidators(UIInput.java:712)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)
at javax.faces.component.UIForm.processValidators(UIForm.java:253)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:650) [javax.faces-2.2.8-15.jar:2.2.8-15]
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1195)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) [catalina.jar:7.0.70]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.70]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat7-websocket.jar:7.0.70]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.70]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.70]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) [catalina.jar:7.0.70]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) [catalina.jar:7.0.70]
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) [catalina.jar:7.0.70]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) [catalina.jar:7.0.70]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) [catalina.jar:7.0.70]
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) [catalina.jar:7.0.70]
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:650)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) [catalina.jar:7.0.70]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442) [catalina.jar:7.0.70]
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1082) [tomcat-coyote.jar:7.0.70]
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:623) [tomcat-coyote.jar:7.0.70]
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) [tomcat-coyote.jar:7.0.70]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_92]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_92]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-coyote.jar:7.0.70]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_92]
Caused by: javax.el.PropertyNotFoundException: /usuarios/CadastroUsuario.xhtml @38,110 value="#{cadastroUsuarioBean.usuario.nome}": Target Unreachable, ‘usuario’ returned null
at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:144) ~[primefaces-5.3.jar:5.3]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:171) ~[primefaces-5.3.jar:5.3]
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1045) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at javax.faces.component.UIInput.validate(UIInput.java:975) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at javax.faces.component.UIInput.executeValidate(UIInput.java:1248) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at javax.faces.component.UIInput.processValidators(UIInput.java:712) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at javax.faces.component.UIForm.processValidators(UIForm.java:253) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1195) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
… 23 more
Caused by: javax.el.PropertyNotFoundException: Target Unreachable, ‘usuario’ returned null
at org.apache.el.parser.AstValue.getTarget(AstValue.java:148) ~[jasper-el.jar:7.0.70]
at org.apache.el.parser.AstValue.getType(AstValue.java:82) ~[jasper-el.jar:7.0.70]
at org.apache.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:171) ~[jasper-el.jar:7.0.70]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1082)
at org.jboss.weld.el.WeldValueExpression.getType(WeldValueExpression.java:93) ~[weld-servlet-2.3.2.Final.jar:2.3.2.Final]
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:623)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:98) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:144) ~[primefaces-5.3.jar:5.3]
at org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:171) ~[primefaces-5.3.jar:5.3]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1045) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.el.PropertyNotFoundException: Target Unreachable, ‘usuario’ returned null
at javax.faces.component.UIInput.validate(UIInput.java:975) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at javax.faces.component.UIInput.executeValidate(UIInput.java:1248) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at org.apache.el.parser.AstValue.getTarget(AstValue.java:148)
at org.apache.el.parser.AstValue.getType(AstValue.java:82)
at org.apache.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:171)
at org.jboss.weld.el.WeldValueExpression.getType(WeldValueExpression.java:93)
at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:98)
at javax.faces.component.UIInput.processValidators(UIInput.java:712) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at javax.faces.component.UIForm.processValidators(UIForm.java:253) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
… 35 more

at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1195) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76) ~[javax.faces-2.2.8-15.jar:2.2.8-15]
… 23 more


dá uma olhada classe serviço

public class CadastroUsuarioService implements Serializable {

    private static final long serialVersionUID = 0L;

    @Inject
    private Usuarios usuarios;

    @Transactional
    public Usuario salvar(Usuario usuario) {
        Usuario usuarioExistente = usuarios.porId(usuario.getId());

        if (usuarioExistente != null && !usuarioExistente.equals(usuario)) {
            throw new NegocioException("Já existe um usuario informado.");
        }

        return usuarios.guardar(usuario);
    }

}

O seu objeto usuário está nulo, por isso essa exception. O jsf não consegue atribuir o nome ao objeto usuário, porque ele não foi instânciado. No seu método inicializar() adicione o código:

usuario = new Usuario() ;
1 curtida

Ainda persiste o mesmo erro, não consigo identificar este problema, agora apagou pasta acho que tem algum erro interno netbeans, ApacheTomcat. fui limpar e construir deu pasta erro ao limpar e excluir.

Você sabe como fazer debug do código?

1 curtida

Nunca realizei debug, fiz agora encontrou erro dizendo que Não foi possível submeter o ponto de interrupção FieldBreakpoint, cadastroProdutoService, corrigir, deu erro null conversor grupo, adicionei conversor para grupo inseriu beleza, muito obrigado pela ajuda, me salvou!! kkkk. Mas beleza abusando da sua boa vontade o que se resume a debug no projeto, sou novato em programação estou em processo de aprendizagem, desde de já muitíssimo obrigado, estou fazendo tcc num projeto cujo conteudo pra implementar-lo que não teve na emenda curso if mas foi o que apareceu tive que ir atrás, valeu um abraço.

1 curtida

Sem problema amigo, estamos aqui pra ajudar.
Só não esqueça de realizar algumas coisas básicas quando se está se desenvolvendo, uma delas é fazer um debug quando estiver com um erro que não consegue resolver :wink:

Olá Renan estou com mesmo problema me parece que em todas as classes já fiz tudo isto que já conversando, mas nada, quando penso que comecei a entender começa a bagunça, sem muitas alternativas, não sei o que fazer.não sei se é ambiente de desenvolvimento isto está me tirando do foco desanimando, desde de já obrigado.