如果用户使用以下方法展开我的客户端处理树的节点,我终于设法接收事件:
public void processExpansion(NodeExpandedEvent event) throws AbortProcessingException {
if (event != null && event.getSource() != null && event.getSource() instanceof HtmlTree) {
this.expandedNodes.add(((UITree) event.getSource()).getRowData());
}
}
由于recursiveTreeNodesAdaptor,我不得不使用#getRowData()。
如何获取用户再次崩溃的节点通知?我找不到合适的听众。
答案 0 :(得分:2)
您可以使用ChangeExpandListener
<rich:changeExpandListener>
表示在节点上的展开/折叠事件上通知的动作侦听器方法。
编辑:
首先, changeExpandListener 必须作为<rich:treeNode>
的属性进行分类,如果在编写时为已故的树工作声明(事件在选择事件后处理)。
所以:
<rich:tree value="#{simpleTreeBean.treeNode}" var="item" >
<rich:treeNode changeExpandListener="#{simpleTreeBean.processExpansion}">
<h:outputText value="#{item}" />
</rich:treeNode>
</rich:tree>
processExpansion 方法必须将 NodeExpandedEvent 作为参数,但不需要实现接口 org.richfaces.event.NodeExpandedListener 。
public void processExpansion(NodeExpandedEvent evt) {
Object source = evt.getSource();
if (source instanceof HtmlTreeNode) {
UITree tree = ((HtmlTreeNode) source).getUITree();
if (tree == null) {
return;
}
// get the row key i.e. id of the given node.
Object rowKey = tree.getRowKey();
// get the model node of this node.
TreeRowKey key = (TreeRowKey) tree.getRowKey();
TreeState state = (TreeState) tree.getComponentState();
if (state.isExpanded(key)) {
System.out.println(rowKey + " - expanded");
} else {
System.out.println(rowKey + " - collapsed");
}
}
}
那应该有帮助