我正在用primefaces樹組件編寫一些頁面。我想在樹節點選擇後更新outputLabel。標籤應顯示當前選定節點的名稱。我的問題在於primefaces在託管bean中爲此事件啓動監聽器。 Listener方法根本不會被調用。我能夠更新outputLabel(使用其他bean的當前時間值),但我不能使用偵聽器方法。這裏是我的網頁片段():p:沒有調用樹節點select listener
<p:tree value="#{directoryTreeBuilder.root}"
var="node"
dynamic="true"
style="border: none;"
selectionMode="single"
selection="#{directoryTreeBuilder.selected}">
<p:ajax event="select"
listener="#{directoryTreeBuilder.onDirSelected}"
update=":currentDir"/>
<p:treeNode>
<h:outputText value="#{node}" />
</p:treeNode>
</p:tree>
...
<h:outputText id="currentDir" value="#{directoryTreeBuilder.selected}" />
這裏被管理的Bean:
@Named(value = "directoryTreeBuilder")
@SessionScoped
public class DirectoryTreeBuilder implements Serializable {
/**
* Directory facade bean.
*/
@EJB
private DirectoryFacadeLocal dirBean;
/**
* Tree structure root directory.
*/
private TreeNode root;
/**
* Current selected directory.
*/
private DefaultTreeNode selected;
/**
* Bean initialization method.
*/
@PostConstruct
public void init() {
//Root initiation.
}
/**
* Root getter.
* @return root directory with structure;
*/
public TreeNode getRoot() {
return root;
}
/**
* Get selected directory node.
* @return primefaces treenode;
*/
public TreeNode getSelected() {
return selected;
}
public void setSelected(TreeNode selected) {
this.selected = (DefaultTreeNode) selected;
}
/**
* Selected event listener method.
* @param e selection from primefaces
*/
public void onDirSelected(NodeSelectEvent e) {
System.err.println("DIR SELECTED!");
this.selected = (DefaultTreeNode) e.getTreeNode();
}
}
目前我正在從NetBeans的Glassfish的V4 8封裝此代碼。首先我使用PrimeFaces 4.0,但現在它在PrimeFaces 5.1上運行。沒有效果。
UPDATE:整頁代碼:http://pastebin.com/vEPtWtw2
我認爲你的問題來自你沒有顯示的xhtml代碼。 – wittakarn 2014-11-02 11:30:46
使用pastebin添加完整頁面代碼(在OP中)。 – 2014-11-02 13:12:19