Mais é assim mesmo, vivo sempre aparece!
Hoje vou falar de algo que estava tirando meu sono, e que depois de muito procurar vi que é muito simples, sobre este assunto pude encontrar várias soluções porém nenhuma deu certo, comigo, e por isso venho colocar a solução que foi de forma bastante satisfatória.
O que eu queria?
Eu queria limpar a árvore para um estado inicial, ou se houvesse três checkboolean marcados e eu desmarcasse um, a arvore fosse redenderizada e mostrasse apenas que estavam ativas. Pois bem, pense no sufoco! Mais ainda, eu queria que de um lista fosse montado uma árvore(p:treeTable) com todos as opções, exemplo:
*Futebol *Time *Estádio
- Time - Patrocinador - Capacidade
- Estádio - Presidente - Local
- Jogadores - Treinador - Nome
Então, o cenário é adicionar os marcados em (*) asterisco e a partir deles montasse uma árvore, até aí tudo certo, montava direitinho, porém quando eu desmarcava uma opção a árvore não o tirava, ainda ficava com as três opções.
Então, qual era minha ideia, limpar a árvore e montar com as que ainda permanecem ativas.
Achei essas soluções: Clean Input e reset values , mas não obtive sucesso.
A solução abaixo foi que realizou conforme eu desejava:
public void limparArvore(TreeNode raiz){ raiz.getChildren().clear(); raiz.clearParent(); System.out.println("Limpando a árvore!"); PrimeFaces pf = PrimeFaces.current(); pf.resetInputs("form:arvore"); raiz = createNode(); pf.ajax().update("form:arvore"); }
Com esse código eu fiquei muito feliz!
Espero ter ajudado a você, dê seu feedBack!
Até a próxima.