Fórum Arvore de dados rich:tree #377741
17/05/2010
0
Saudações, gostaria de saber dos nobres programadores se alguem conhece uma solução funcional do compontente tree do richfaces nos moldes abaixo.
É o seguinte, tenho duas entidades mapeadas do mysql, "departamentos e categoria" e gostaria de implementar uma arvore de dados onde os nós pai são os departamentos, e os nós filhos as categorias, como no exemplo acima. sendo alimentadas pelo banco de dados mysql, tenho um modelo capenga onde carrega só os departamentos, já pequisei na net por varios modelos mas sem exito.
Se alguem puder me ajudar nesse problema, ou tiver um exemplo, ou souber de um tuto pra me ajudar, fico muito grato, pois é pra um projeto meu de faculdade.
Obrigado mais uma vez
Rodrigo Vieira
dhigoos@bol.com.br
Rodrigo Vieira
Curtir tópico
+ 0Posts
18/05/2010
Dyego Carmo
http://upmauro.wordpress.com/2008/09/29/usando-richtree-richfaces-tree/
Gostei + 0
19/05/2010
Rodrigo Vieira
public void validateUsuario(FacesContext context, UIComponent component, Object value) throws ValidatorException {
boolean exists = new UsuarioDAO().isUsernameAndPasswordExists(userMailInput.getLocalValue().toString(), value.toString());
if(!exists){
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "USUARIO/LOGIN INVALIDOS!","USUARIO/LOGIN INVALIDOS!");
throw new ValidatorException(message);
}
}
Funcionou perfeitamente, e caso o usuario entra com login errado, a mensagem é carregada.
Porem precisei adapta-la como integer para poder preencher duas variáveis de sessão para pegar o id e o e-mail do usuário, funcionou tambem. segue abaixo minha adaptação.
public void validateUsuario(FacesContext context, UIComponent component, Object value) throws ValidatorException {
Integer exists = new UsuarioDAO().isUsernameAndPasswordExists2(userMailInput.getLocalValue().toString(), value.toString()); if(exists.equals(null)){ FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "USUARIO/LOGIN INVALIDOS!","USUARIO/LOGIN INVALIDOS!"); throw new ValidatorException(message); }else{ id_usuarios = exists; mail = userMailInput.getLocalValue().toString(); System.out.println("codigo do usuário = "+exists);
System.out.println("email do usuário = "+mail); } }
Mas se entrar com login errado, ao invés de dar a mensagem padrao "USUARIO/LOGIN INVALIDOS!", dá a mensagem.
/login.jsp(109,8) '#{LoginFace.validateUsuario}' java.lang.NullPointerException
Acho que foi por que mudou de booleam para Integer. como poderia acertar para voltar a mensagem original.
cara, agradeço mais uma vez tua força.
Gostei + 0
19/05/2010
Rodrigo Vieira
public Integer isUsernameAndPasswordExists2(String userMail, String senha){ Integer IdUsr = null; EntityManager em = JPAUtil.getInstance().getEntityManager(); Query qr = em.createQuery("select usr from Usuario usr where usr.email = ?1 and usr.senha = ?2"); qr.setParameter(1, userMail); qr.setParameter(2, senha); List<Usuario> rsusuario = new ArrayList<Usuario>(); rsusuario = qr.getResultList();
if (rsusuario.size() > 0){ if((rsusuario.get(0).getEmail().equals(userMail)) && (rsusuario.get(0).getSenha().equals(senha))) { IdUsr = rsusuario.get(0).getId_usuarios(); }else { IdUsr = 0; } } em.getTransaction().commit(); em.close(); return IdUsr; }Mais uma vêz obrigado pela atenção.
Gostei + 0
22/05/2010
Dyego Carmo
Tem como voce colar o STACK TRACE COMPLETO aqui ?
Fico mais facil descobrir onde esta o erro :)
Gostei + 0
25/05/2010
Rodrigo Vieira
Caro Dyego, mais uma vez muito obrigado pela sua atenção brother, mas o netbeans nao emite nenhuma log de erro referente ao problema que te falei, o erro que dá é na pagina de login, onde ao entrar com senha e login errado, ao inves da mensagem "USUARIO/LOGIN INVALIDOS!" aparece a mensagem
/login.jsp(109,8) '#{Loginace.validateUsuario}' java.lang.NullPointerException
e ao logar normalmente, o log do tomcat informa o id e o email corretos.
INFO: Server startup in 13104 ms
codigo do usuário = 1
email do usuário = dhigoos@bol.com.br
ou entao eu nao estou sabendo gerar o stack trace que voce fala.
obrigado.
Gostei + 0
03/06/2010
Dyego Carmo
Gostei + 0
06/06/2010
Rodrigo Vieira
Caro Dyego, mais uma vez muito obrigado pela sua atenção brother, mas o netbeans nao emite nenhuma log de erro referente ao problema que te falei, o erro que dá é na pagina de login, onde ao entrar com senha e login errado, ao inves da mensagem "USUARIO/LOGIN INVALIDOS!" aparece a mensagem
"/login.jsp(109,8) '#{Loginace.validateUsuario}' java.lang.NullPointerException"
e ao logar normalmente, o log do tomcat informa o id e o email corretos.
INFO: Server startup in 13104 ms
codigo do usuário = 1
email do usuário = dhigoos@bol.com.br
ou entao eu nao estou sabendo gerar o stack trace que voce fala.
obrigado.
Gostei + 0
11/06/2010
Dyego Carmo
Preciso do stacktrace completo :(
Gostei + 0
15/06/2010
Rodrigo Vieira
Caro dyego, valeu pela dica, obrigadão mesmo, mas foi muito simples resolver, fuçando no código, foi só mudar a expressao.
if(exists.equals(null)){
por
if(exists.equals == null){
e deu certo.
valeu.
Eu gostaria que voce me ajudasse com isso
como usar ValueChangeListener em uma situação dessas ? o que preciso acrescentar no bean ?
como usar o ValueChangeListener na jsf ?
voce tem algum exemplo ?
essas duas selecOneListbox foram preenchidas com código de exemplo seu, do curso "aplicação completa com jpa", me ajuda ai irmão, valeu.
02 selectOneListbox aninhadas, ou seja, de duas entitades relacionadas, departamento e categoria, segue abaixo.
já consegui alimenta-las, mas nao consigo aninha-las, ou seja, carregar as categorias referente ao Departamento selecionado.
abaixo segue meu bean
//pegar departamentos
public SelectItem[] getDepto(){
List<DeptoProduto> depProd = DaoDepProd.getAllDeptoProduto();
SelectItem[] retorno = new SelectItem[depProd.size()];
for (int idx = 0; idx < retorno.length; idx++) {
retorno[idx] = new SelectItem(depProd.get(idx),depProd.get(idx).getNome_depto());
}
return retorno;
}
//pegar categorias
public SelectItem[] getCateg(){
List<CategProduto> catProd = DaoCatProd.getAllCategProduto();
SelectItem[] retorno = new SelectItem[catProd.size()];
for (int idx = 0; idx < retorno.length; idx++) {
retorno[idx] = new SelectItem(catProd.get(idx),catProd.get(idx).getNome_categ());
}
return retorno;
}
tenho os conversores para departamentos e categorias, caso precise é só pedir que eu postos elas ai,
e abaixo segue minha pagina jsf.
<h:selectOneListbox id="depto" size="7" style="position: absolute; left: 300px; top: 260px"
value="#{ProdutosFaces.produtoInAction.prodCadast}">
<f:selectItems value="#{ProdutosFaces.depto}"/>
<f:converter converterId="DeptoConverter"/>
</h:selectOneListbox>
<h:selectOneListbox id="categ" size="7" style="position: absolute; left: 550px; top: 260px"
value="#{ProdutosFaces.produtoInAction.categProdProd}">
<f:selectItems value="#{ProdutosFaces.categ}"/>
<f:converter converterId="CategConverter"/>
</h:selectOneListbox>
o que preciso é que ao clicar em um departamento, a combo categorias mostres as categorias relacionadas.
mais uma vez agradeço a atenção, obrigao.
Fico no aguardo.Valeu, fico no aguardo.
Gostei + 0
18/06/2010
Dyego Carmo
----------------------------------------------------------------
Dúvidas em Programação ? - http://www.forHelp.US
Controverso Eu ? - http://www.go-java.com
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)