treeNOde do Primefaces
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á.
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
Curtidas 0
Respostas
Andrei Hirata
04/02/2011
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); } }
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); } }
GOSTEI 0
Vagner Oliveira
04/02/2011
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.
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;
}
GOSTEI 0
Andrei Hirata
04/02/2011
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
}
}
}
<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
}
}
}
GOSTEI 0
Dyego Carmo
04/02/2011
Problema Persiste ou foi corrigido ?
Caso esteja corrigido favor fechar a pendencia !
Valeu !
Caso esteja corrigido favor fechar a pendencia !
Valeu !
GOSTEI 0
Vagner Oliveira
04/02/2011
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.
Então criei um texto html como seu valor <a href></a>.
Assim resolve todos os problemas valeu.
GOSTEI 0