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

Rodrigo Vieira

Responder

Posts

18/05/2010

Dyego Carmo

Tentou utilizar esta solucao ?

http://upmauro.wordpress.com/2008/09/29/usando-richtree-richfaces-tree/

Responder

Gostei + 0

19/05/2010

Rodrigo Vieira

Caro Dyego, mais uma vez obrigado pela atenção, eu já vi essa dica que voce me passou e vou estuda-la depois, mas mudando de pau pra cacete, quero te perguntar uma coisa, acho que a solução é bem simples, estou seguindo suas video aulas "desenvolvendo sistema completo em jpa" para adaptar em meu projeto de faculdade, e implementei o seu  validador de usuário abaixo.

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.






Responder

Gostei + 0

19/05/2010

Rodrigo Vieira

Opa esqueci de te mostrar o método isUsernameAndPasswordExistis2 dentro do usuárioDAO que adaptei.
        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.
Responder

Gostei + 0

22/05/2010

Dyego Carmo

Opa !


Tem como voce colar o STACK TRACE COMPLETO aqui ?

Fico mais facil descobrir onde esta o erro :)



Responder

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.
Responder

Gostei + 0

03/06/2010

Dyego Carmo

Cole novamente o codigo aqui... tah aparecendo todo baguncado seu post :(

Responder

Gostei + 0

06/06/2010

Rodrigo Vieira

Desculpa ter saido errado. o post original é o abaixo.

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.

Responder

Gostei + 0

11/06/2010

Dyego Carmo

Opa
Preciso do stacktrace completo :(

Responder

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.


Responder

Gostei + 0

18/06/2010

Dyego Carmo

Que Bom !!!!




----------------------------------------------------------------
Dúvidas em Programação ? - http://www.forHelp.US
Controverso Eu ? - http://www.go-java.com
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar