Aplicação jsf, primefaces, não insere no banco de dados retorno nulo
8 respostasResolvido
java
A
Adriano12
<h:form><h1>CadastroUsuário</h1><f:metadata><o:viewParamname="usuario"value="#{cadastroUsuarioBean.usuario}"/><f:eventlistener="#{cadastroUsuarioBean.inicializar}"type="preRenderView"/></f:metadata><p:messagesautoUpdate="true"closable="true"/><p:toolbar><p:toolbarGroup><p:buttonvalue="Novo"outcome="CadastroUsuario"/><p:commandButtonvalue="Salvar"id="botaoSalvar"action="#{cadastroUsuarioBean.salvar}"update="@form"/></p:toolbarGroup><p:toolbarGroupalign="right"><p:buttonvalue="pesquisa"/></p:toolbarGroup></p:toolbar><p:panelGridcolumns="2"id="painel"style=" width: 100%; margin-top: 20px"columnClasses="rotulo, campo"><p:outputLabelvalue="Nome"for="nome"/><p:inputTextid="nome"size="60"maxlength="80"value="#{cadastroUsuarioBean.usuario.nome}"/><p:outputLabelvalue="E-mail"for="email"/><p:inputTextid="email"size="60"maxlength="80"value="#{cadastroUsuarioBean.usuario.email}"/><p:outputLabelvalue="Senha"for="senha"/><p:passwordid="senha"value="#{cadastroUsuarioBean.usuario.senha}"/><p:selectOneMenuid="categoria"value="#{cadastroUsuarioBean.grupo}"><f:selectItemitemLabel="Selecione a categoria"/><f:selectItemsvalue="#{cadastroUsuarioBean.grupo}"var="grupo"itemValue="#{grupo}"itemLabel="#{grupo.nome}"/></p:selectOneMenu><p:commandButtonvalue="Adicionar grupo"action="#{cadastroUsuarioBean.adicionarGrupo}"/></p:panelGrid>
cadastroUsuarioBean.java
@Named@ViewScopedpublicclassCadastroUsuarioBeanimplementsSerializable{privatestaticfinallongserialVersionUID=0L;privateUsuariousuario;privateGrupogrupoSelecionado;privateList<Grupo>grupo=newArrayList<Grupo>();@InjectprivateCadastroUsuarioServicecadastroUsuarioService;@InjectprivateGruposgrupos;publicCadastroUsuarioBean(){limpar();}publicvoidinicializar(){grupo=grupos.grupos();grupoSelecionado=newGrupo();}publicvoidlimpar(){usuario=newUsuario();grupo=newArrayList<Grupo>();}publicvoidsalvar(){adicionarGrupo();this.usuario=cadastroUsuarioService.salvar(this.usuario);limpar();FacesUtil.addInfoMessage("Usuario cadastro com sucesso!");}publicvoidadicionarGrupo(){this.usuario.getGrupos().add(grupoSelecionado);}publicUsuariogetUsuario(){returnusuario;}publicvoidsetUsuario(Usuariousuario){this.usuario=usuario;if(this.usuario!=null){this.grupo=this.usuario.getGrupos();}}publicList<Grupo>getGrupo(){returngrupo;}publicGrupogetGrupoSelecionado(){returngrupoSelecionado;}publicvoidsetGrupoSelecionado(GrupogrupoSelecionado){this.grupoSelecionado=grupoSelecionado;}}
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
publicclassCadastroUsuarioServiceimplementsSerializable{privatestaticfinallongserialVersionUID=0L;@InjectprivateUsuariosusuarios;@TransactionalpublicUsuariosalvar(Usuariousuario){UsuariousuarioExistente=usuarios.porId(usuario.getId());if(usuarioExistente!=null&&!usuarioExistente.equals(usuario)){thrownewNegocioException("Já existe um usuario informado.");}returnusuarios.guardar(usuario);}}
R
renanperez1 like
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=newUsuario();
A
Adriano12
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.
R
Solucao aceita
renanperez1 like
Você sabe como fazer debug do código?
A
Adriano121 like
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.
R
renanperez
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
A
Adriano12
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.