Exibir dados de perfil do usuario logado [Resolvido]
37 respostasResolvido
C
Cicero_regis
Bom galera to criando um painel onde tem a seção de meu perfil para o Administrador que estiver online pode ver as informações de seu perfil. Porém todavia entretanto estou com problemas na criação da página de perfil, já li alguns tutorias e assisti algumas video-aulas, porém está tudo escuro ainda.
Eu queria saber como fazer para exibir em uma página as informações de um único usuário do banco de dados, sendo que no banco existem outros usuários também.
Eu sei selecionar tudo e exibir todos os usuários cadastrados no banco em uma página, mas eu queria mesmo era exibir as informações do usuário que estar logado, ou seja, só as dele.
eu utilizo um <h:link outcome=""/> pra redirecionar porem não faço ideia de como chamar um metodo que me retorne dos dados.
É só dar um select com where, ai vai retornar um objeto.
Pra chamar o método tem algumas formas:
1)Se for um outro managed bean, você pode usar @PostConstruct init para trazer os dados do banco.
2)Se for o mesmo managed bean(Session Scoped), você altera de h:link para h:commandLink, ai na action você chama o método (deve retornar uma String) que da o select no banco e então retorna a url que você ia passar no outcome (mas coloca a extensão da pagina: qualquer-pagina.xhtml)
3)Na sua página de exibir os dados, você pode colocar para executar um método na fase preRenderView, para fazer isso de uma olhada na tag f:event
C
Cicero_regis
Olá Mike, Muito obrigado reponder.
Então, eu fiz exatamente oque vc falou e fiz um teste. Ele funciona.
Agora gostaria de retorna essa consulta e um panelGrid, ai vc falando do f:event fiquei um pouco confuso. teria algum exemplo que pudesse deixar mais claro?
M
Mike
Cria um panelGrid embaixo da sua consulta.
O panelGrid tem um atributo chamado rendered, e esse rendered aceita apenas boolean.
rendered="#{bean.objeto != null}"
Ou
rendered="#{bean.mostrarObj}" mostrarObj é um boolean
No seu botao de consultar, da um update no panelgrid
aqui eu chamo meu link
<h:commandLink outcome="/usuario/usuario_dadosCadastrais.xhtml" action="#{usuarioMB.dadosUsuarioCadastrado}" ajax=“false” update=“pnelg”>Meus dados
</h:commandLink>
mais ñ está retornando nada na tela
OBS:
no console ele me retorna a query normalmente
só ñ consigo retornar na pagina.
M
Solucao aceita
Mike
Eu esqueci que vc esta usando jsf puro
h:commandLink não tem o atributo update, ajax e nem outcome.
@NamedQuery(name="Usuario.findByid",query="select u from Usuario u "+"where u.id = :id")@EntitypublicclassUsuarioimplementsSerializable{privatestaticfinallongserialVersionUID=1L;@Id@GeneratedValue(strategy=GenerationType.IDENTITY)privateIntegerid;@Column(length=50)privateStringnome;@ColumnprivateStringcpf;@ColumnprivateDatenascimento;@Column(length=15)privateStringtelefone;@Column(length=15)privateStringcelular;@Column(length=100)privateStringendereco;@Column(length=10,precision=2)privatefloatsalario;@ColumnprivateStringsexo;@Column(length=20)privateStringcargo;@Column(length=30)privateStringemail;@Column(length=15,unique=true)privateStringlogin;@Column(length=20)privateStringsenha;@Columnprivatebooleanativo;privateDatedataAdmissao;@ColumnprivateStringclt;//getter e setter}
M
Mike
Você esta setando algum valor para o id desse usuario?
Se não, vai estar nulo mesmo.
C
Cicero_regis
setar um valor? como assim??
M
Mike
Você esta dando algum valor ao id?
Olha o que você esta fazendo:
Você tem um objeto usuario e então atribui o valor de seu id para uma variavel id
Você cria um objeto DAO
Você busca um usuario com base no id
Você precisa dar um id pro seu objeto usuario, antes de buscar no banco.
Supondo que tudo esteja correto, você deve armazenar o retorno de findById em um objeto
objeto = usuarioDAO.findByid(id);
C
Cicero_regis
acho que entendi…
eu fiz assim…
public String dadosUsuarioCadastrado() {
Eu nem vou entrar no mérito de qual forma é a mais adequada, só estou seguindo a sua lógica…
O seu visualizaDadosUsuario esta nulo. usuarioDAO.findByid(id); você tem que passar um id aqui
if(visualizaDadosUsuario!=null)
{
System.out.prinln("visualizaDadosUsuario nao esta nulo");if(visualizaDadosUsuario.getId()!=null){
System.out.prinln("visualizaDadosUsuario.getId() nao esta nulo");}
else{
System.out.prinln("visualizaDadosUsuario.getId() esta nulo");}
}
else
{
System.out.prinln("visualizaDadosUsuario esta nulo");
}
Cara, poem isso antes de
this.visualizaDadosUsuario = usuarioDAO.findByid(visualizaDadosUsuario.getId());
pra vc ver o que esta acontecendo, ja tentei explicar de mil formar mas não vai…
Você pulou algumas etapas do aprendizado ai chega uma parte que não da para prosseguir
C
Cicero_regis1 like
Eu eu conseguir , era o eclipse que estava bichado,ai reiniciei ele e o metodo funcionou.
Mais era exatamente os exemplos que vc passou… Muito obrigado mike mais uma vez.
M
Mike
Haha que bom que deu certo.
Direto o eclipse buga aqui também, ai tenho que reiniciar para fazer funcionar kk
C
Cicero_regis
pois é! engraçado que agente fica louco achando que o problema é com agente…rsrsrsr Vlw Mike. vou encerrar o Post