Fórum treeNOde do Primefaces #395105

04/02/2011

0

Boa noite Pesoal..

Eu estou utilizando o treeNode do Primafaces, e quero fazer o seguinte.

Tenho uma pagina que chama os treeNodes.....

<p:tree value="#{treeBean.pos}" var="node" selectionMode="single" update="iframe"                                               selection="#{treeBean.selectedNode}" nodeSelectListener="#{treeBean.onNodeSelect}" >
    <p:treeNode >
        <h:link value="#" hreflang="#{treeBean.nodeTitle}" />
    </p:treeNode>
</p:tree>


E o bean contento eles.....

    private TreeNode pos;
    private TreeNode selectedNode;
    private String nodeTitle;

    public TreeBean() {
        pos = new DefaultTreeNode("Pós-Graduação", null);

        TreeNode node00 = new DefaultTreeNode("Pos", pos);
        TreeNode node01 = new DefaultTreeNode("Teste", node00);
    }

    public TreeNode getPos() {
        return pos;
    }

    public TreeNode getSelectedNode() {
        return selectedNode;
    }

    public void setSelectedNode(TreeNode selectedNode) {
        this.selectedNode = selectedNode;
    }

    public void onNodeSelect(NodeSelectEvent event) {

        // AQUI ESTOU TENTANDO RECUPERAR O VALOR DA NO E DEFINIR UMA URL
       
    }

    public String getNodeTitle() {
        return nodeTitle;
    }

    public void setNodeTitle(String nodeTitle) {
        this.nodeTitle = nodeTitle;
    }


e na paginá que se encontra os treenodes possui um iFrame....

<iframe src="posGraduacao.xhtml" height="500px" width="820px" id="iframe" frameborder="0" name="iframe"       style="padding-top: 0px;" >

</iframe>

Conclusão: O iFrame tras uma pagina padrão, mas quando eu clicar no treeNode eu quero mostrar a pagina referente a cada treeNode, Ex. treeNode Pos tras a pagina pos.xhtml no iframe o treeNode teste tras a pagina
teste.xhml.

Se alguem puder me ajudar.
Estou grato desde já.
Vagner Oliveira

Vagner Oliveira

Responder

Posts

05/02/2011

Andrei Hirata

Uma solução rápida

import javax.faces.bean.ManagedBean;    import org.primefaces.model.TreeNode;  import org.primefaces.model.DefaultTreeNode;  @ManagedBean  public class IndexBean {      private TreeNode root;                   public IndexBean() {          root = new DefaultTreeNode("Root", null);          TreeNode node0 = new DefaultTreeNode("Node 0", root);            TreeNode node1 = new DefaultTreeNode("Node 1", root);                TreeNode node00 = new DefaultTreeNode("Node 0.0", node0);                  TreeNode node01 = new DefaultTreeNode("Node 0.1", node0);                        TreeNode node010 = new DefaultTreeNode("Node 1.0", node1);            TreeNode node011 = new DefaultTreeNode("Node 1.1", node1);                      TreeNode node000 = new DefaultTreeNode("Node 0.0.0", node00);            TreeNode node001 = new DefaultTreeNode("Node 0.0.1", node00);            TreeNode node0010 = new DefaultTreeNode("Node 0.1.0", node01);      }          public TreeNode getRoot() {          return root;      }        } 


<h:body>       <h:form>              <div id="divArvoredos">                  <p:tree value="#{indexBean.root}" var="node">                      <p:treeNode>                                                <h:link value="#">                      </p:treeNode>                  </p:tree>              </div>               <iframe src="" name="miolo" class="coisa" width="730" marginwidth="0" height="518" marginheight="0" align="top" scrolling="no" frameborder="0">             </iframe>      </h:form>      </h:body> 


<h:body>         <h:form>                <div id="divArvoredos">                    <p:tree value="#{indexBean.root}" var="node">                        <p:treeNode>                                                  <h:link value="#" target="miolo" outcome="/a_pagina_q_vai_no_frame?id=#{node.data}">                        </p:treeNode>                    </p:tree>                </div>                   <iframe src="" name="miolo" class="coisa" width="730" marginwidth="0" height="518" marginheight="0" align="top" scrolling="no" frameborder="0">               </iframe>        </h:form>    </h:body>    <h:body> <h:form> <div id="divArvoredos"> <p:tree value="#{indexBean.root}" var="node"> <p:treeNode> <h:link value="#" target="miolo" outcome="/a_pagina_q_vai_no_frame?id=#{node.data}"> </p:treeNode> </p:tree> </div> <iframe src="" name="miolo" class="coisa" width="730" marginwidth="0" height="518" marginheight="0" align="top" scrolling="no" frameborder="0"> </iframe> </h:form> </h:body>
A página q vai no frame fica mais ou menos assim:
<h:body>    <f:metadata>      <f:viewParam name="id" value="#{bean.id}" />    </f:metadata>      <!-- Aqui ficam os componentes q vão mostrar os dados -->  </h:body>  <h:body> <f:metadata> <f:viewParam name="id" value="#{bean.id}" /> </f:metadata> <!-- Aqui ficam os componentes q vão mostrar os dados --> </h:body>
Ai vc só precisa de um bean p/ expor essas informações.

@Named  @RequestScoped  public class Bean {    private Pessoa pessoaSelecionada;      public Pessoa getPessoaSelecionada() {      return pessoaSelecionada;    }      public String getId() {      return pessoaSelecionada.getId();    }      public void setId(String id) {      pessoaSelecionada = em.find(Pessoa.class, id);    }  } 



Responder

Gostei + 0

05/02/2011

Vagner Oliveira

Ai pessoal deixa eu explicar melhor, funciona certo o h:link ele submete para o frame, mas para fazer esse teste
eu passei uma página fixa no codigo, então eu queria saber como passar uma pagina a cada treeNode existente,
pois assim cada treeNode selecionado chamará uma pagina diferente...
Grato.


<table>
                            <tr>
                                <td style="padding-left: 0; padding-top: 6px; vertical-align: top;">
                                    <div id="arvore">


                                        <p:accordionPanel autoHeight="false" style="width: 190px;">
                                            <p:tab title="Cursos">
                                                <h:panelGrid>
                                                    <p:tree value="#{treeBean.root}" var="node">
                                                        <p:treeNode>
                                                            <h:link value="#" target="iframe" outcome="pagina"/>
                                                        </p:treeNode>
                                                    </p:tree>
                                                </h:panelGrid>
                                            </p:tab>
                                        </p:accordionPanel>

                                    </div>
                                </td>
                                <td style="padding-top: 0px; vertical-align: top;">
                                    <iframe src="posGraduacao.xhtml" height="500px" width="820px" id="iframe" frameborder="0" name="iframe" style="padding-top: 0px;" >

                                    </iframe>
                                </td>
                            </tr>
                        </table>




private TreeNode root;


     public TreeBean() {
         root = new DefaultTreeNode("Root", null);
         TreeNode node0 = new DefaultTreeNode("posJava 0", root);
         TreeNode node1 = new DefaultTreeNode("Node 1", root);
         TreeNode node00 = new DefaultTreeNode("Node 0.0", node0);
         TreeNode node01 = new DefaultTreeNode("Node 0.1", node0);

         TreeNode node010 = new DefaultTreeNode("Node 1.0", node1);
         TreeNode node011 = new DefaultTreeNode("Node 1.1", node1);

         TreeNode node000 = new DefaultTreeNode("Node 0.0.0", node00);
         TreeNode node001 = new DefaultTreeNode("Node 0.0.1", node00);
         TreeNode node0010 = new DefaultTreeNode("Node 0.1.0", node01);
     }

     public TreeNode getRoot() {
         return root;
     }

Responder

Gostei + 0

05/02/2011

Andrei Hirata

APROVEITANDO ESTE EXEMPLO

<h:form> 
 
    <p:growl id="messages" showDetail="true" /> 
 
    <p:ajaxStatus style="width:16px;height:16px;"> 
        <f:facet name="start"> 
            <h:graphicImage value="../design/ajaxloading.gif" /> 
        </f:facet> 
         
        <f:facet name="complete"> 
            <h:outputText value="" /> 
        </f:facet> 
    </p:ajaxStatus> 
 
    <p:tree value="#{treeBean.root}" var="node" 
        selectionMode="single" selection="#{treeBean.selectedNode}"> 
 
        <p:treeNode> 
            <h:outputText value="#" /> 
        </p:treeNode> 
    </p:tree> 
     
    <p:commandButton value="Display Selected" update="messages" 
        style="margin:20px 0 20px 0;" 
        actionListener="#{treeBean.displaySelectedSingle}" /> 
     
</h:form> 




-----------

public class TreeBean implements Serializable { 
     
    private TreeNode root; 
     
    private TreeNode selectedNode; 
 
    public TreeBean() { 
        root = new DefaultTreeNode("Root", null); 
        TreeNode node0 = new DefaultTreeNode("Node 0", root); 
        TreeNode node1 = new DefaultTreeNode("Node 1", root); 
        TreeNode node2 = new DefaultTreeNode("Node 2", root); 
         
        TreeNode node00 = new DefaultTreeNode("Node 0.0", node0); 
        TreeNode node01 = new DefaultTreeNode("Node 0.1", node0); 
         
        TreeNode node10 = new DefaultTreeNode("Node 1.0", node1); 
        TreeNode node11 = new DefaultTreeNode("Node 1.1", node1); 
         
        TreeNode node000 = new DefaultTreeNode("Node 0.0.0", node00); 
        TreeNode node001 = new DefaultTreeNode("Node 0.0.1", node00); 
        TreeNode node010 = new DefaultTreeNode("Node 0.1.0", node01); 
         
        TreeNode node100 = new DefaultTreeNode("Node 1.0.0", node10); 
    } 
 
    public TreeNode getRoot() { 
        return root; 
    } 
     
    public TreeNode getSelectedNode() { 
        return selectedNode; 
    } 
 
    public void setSelectedNode(TreeNode selectedNode) { 
        this.selectedNode = selectedNode; 
    } 
     
    public void displaySelectedSingle(ActionEvent actionEvent) { 

//O segredo está aqui. Vc deve colocar varíos IF
       if(builder.toString()="Node 0.0.0")
       {
        //vai para a página que vc quer..Neste caso pesquise sobre JSF Navigation, para vc ter uma idéia de como redirecionar para a pagina que vc quer
       }
    } 



Responder

Gostei + 0

11/02/2011

Dyego Carmo

Problema Persiste ou foi corrigido ?

Caso esteja corrigido favor fechar a pendencia !

Valeu !
Responder

Gostei + 0

12/02/2011

Vagner Oliveira

Ai passoal problema resolvido no bean quando vc cria um tree, ele retorna um texto...
Então criei um texto html como seu valor <a href></a>.
Assim resolve todos os problemas valeu.
Responder

Gostei + 0

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

Aceitar