我建立一個商店網站供我上學,我嘗試添加一棵樹作爲一個類別菜單,但我不能導航到另一個頁面。我收到了控制器中的所有必要數據,但我不知道如何導航到browseByCategory頁面。我不得不提到我是Java JSF中的noooobie。任何代碼將不勝感激。使用primefaces樹組件作爲一個導航菜單
謝謝你, 丹尼斯
我建立一個商店網站供我上學,我嘗試添加一棵樹作爲一個類別菜單,但我不能導航到另一個頁面。我收到了控制器中的所有必要數據,但我不知道如何導航到browseByCategory頁面。我不得不提到我是Java JSF中的noooobie。任何代碼將不勝感激。使用primefaces樹組件作爲一個導航菜單
謝謝你, 丹尼斯
有這樣做的方法有兩種: 1)您可以導航到另一個頁面:
DefaultTreeNode node0 = new DefaultTreeNode("<a href=\"http://www.google.pl\">http://www.google.pl</a>", null);
2),或在您的nodeSelectEvent是這樣的:
<p:tree dynamic="true" value="#{TreeBean.root}" var="node" expandAnim="FADE_IN" collapseAnim="FADE_OUT" nodeSelectListener="#{TreeBean.onNodeSelect}">
<p:treeNode>
<h:outputText value="#{node}" />
</p:treeNode>
</p:tree>
public void onNodeSelect(NodeSelectEvent event){
String url = event.getTreeNode().getData().toString();
System.out.println(event.getTreeNode().getData().toString());
try {
//redirection
FacesContext.getCurrentInstance().getExternalContext().redirect(url);
} catch (IOException ex) {
//Logger.getLogger(TreeBean.class.getName()).log(Level.SEVERE, null, ex);
}
}
問題:由r.piesnikowski分享的建議不正確。即以下代碼不起作用:
DefaultTreeNode node0 = new DefaultTreeNode("<a href=\"http://www.google.pl\">http://www.google.pl</a>", null);
此外,「pSelectListener」屬性在最新版本的p:tree中不存在。
解決方案:使用小時,使用Primefaces樹節點鏈接正確方法:outputLink的是如下:
<h:form>
<p:tree value="#{treeView.root}" var="node">
<p:treeNode>
<h:outputLink value="#{node.url}">#{node.label}</h:outputLink>
</p:treeNode>
</p:tree>
</h:form>
具有兩個屬性字符串URL創建另一個類(姑且稱之爲LinkNode)和字符串標籤。當您創建一個新的節點,通過LinkNode類的新對象與所需的URL &標籤新DefaultTreeNode(Object數據,樹節點父),即新DefaultTreeNode(新LinkNode(「http://example.com」,‘轉到example.com’),根)。
@Named
@ViewScoped
public class TreeView implements Serializable{
private TreeNode root;
@PostConstruct
public void init() {
root = new DefaultTreeNode("Root", null);
TreeNode parent1 = new DefaultTreeNode(new LinkNode("http://example.com","Go to example.com"), root);
TreeNode parent2 = new DefaultTreeNode(new LinkNode("http://example.org","Go to example.org"), root);
}
}
和LinkNode類是這樣的:
public class LinkNode implements Serializable{
private String label; // add setter & getter as needed
private String link; // add setter & getter as needed
LinkNode(String label, String link){
this.label = label;
this.link = link;
}
}
希望它能幫助。我自己測試了這個方法。
你能發佈您的代碼? – Sean 2011-01-22 00:49:14