Estou tendo problemas com tree da primefaces. A montagem do tree na página funcional corretamente, mas qdo selecio um nó ele fica um retângulo azul marinho e o texto some. Alguem saberia qual o motivo.
qquer sugestão é bem vinda, estou brigando com isso a dois dias, e nada.
Tks
Na empresa onde trabalho tivemos problemas com a treeTable do primefaces (versão para JSF 1.2).
O analista responsável pesquisou e nos disse que era um bug do primefaces. (infelizmente não me recordo a versão exata, mas me lembro de ser pra JSF 1.2). O criador do prime disse que a treeTable será reimplementada na versão 3.0.
Nosso problema foi resolvido utilizando a treeTable do RichFaces.
Infelizmente meu problema é com o Tree ( construtor TreeNode) e não com TreeTable, mas de qquer forma obrigado pela dica.
posta o codigo (entre as tags code) que fica mais fácil ajudar
Segue código :
MangedBean
@ManagedBean(name="menuBean")
@SessionScoped
public class MenuBean {
private TreeNode root;
private TreeNode opcoesMenuTree;
private TreeNode selectedNode;
public TreeNode getOpcoesMenuTree() {
if (this.opcoesMenuTree == null) {
OpcoesMenuRN opMenuRN = new OpcoesMenuRN();
List<OpcoesMenu> opMenu = (List<OpcoesMenu>) opMenuRN.localizaOpMenu(1);
this.opcoesMenuTree = new DefaultTreeNode( null , null);
TreeNode pai = null;
TreeNode filho = null;
for (OpcoesMenu opM : opMenu) {
if ( opM.getNivelPai() != null ){
pai = new DefaultTreeNode(opM , this.opcoesMenuTree);
}
else {
filho = new DefaultTreeNode(opM, pai);
}
}
}
return opcoesMenuTree;
}
public void opMenuSelecionada(NodeSelectEvent event ) {
OpcoesMenu opsel = (OpcoesMenu) event.getTreeNode().getData();
Integer nid = opsel.getIdFormulario();
System.out.println("SELECIOANDA" + nid + opsel.getTitleFormulario());
}
public TreeNode getSelectedNode() {
return this.selectedNode;
}
public void setSelectedNode(TreeNode selectedNode) {
this.selectedNode = selectedNode;
}
Arq xhtml para montagem do menu :
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:ui="http://java.sun.com/jsf/facelets" >
<h:form>
<ui:composition>
<h:outputText value="Selecione a opção desejada" style="width:15%; font-family: Verdana; font-size: 10px; font-weight: bold; color: red;"/>
<h:form>
<p:tree value="#{menuBean.opcoesMenuTree}" var="node"
style="width:15%; font-family: Verdana; font-size: 8px; font-weight: bold; color: green; border-top: thin solid #CCCCCC; border-bottom: thin solid #CCCCCC; border-left: medium solid #CCCCCC; border-right: medium solid #CCCCCC; padding-right:2px; "
dynamic="false"
selectionMode="single"
selection="#{menuBean.selectedNode}"
nodeSelectListener="#{menuBean.opMenuSelecionada}"
update="detail" >
<p:treeNode>
<h:outputText value="#{node.titleFormulario}" />
</p:treeNode>
</p:tree>
<h:panelGroup id="detail">
</h:panelGroup>
</h:form>
</ui:composition>
</h:form>
</html>
Uso JSF 1.2, Primefaces 2.2.1, Eclipse e Tomcat 7
Qquer ajuda será muito bem vinda.
Abs.
O Primefaces 2.2.1 foi desenvolvido para JSF 2 e não para JSF 1.2. O problema pode estar aí.
Pra fazer um teste, atualize sua versão do JSF pra 2 ou do primefaces para 1.x
Desculpe a versão correta do JSF que uso é a 2.0.
Tentativa: coloque um id pro componente p:tree e no update adicione esse id
p:tree id=“arvore” update=“arvore, detail” …