1

我正在使用 Primefaces 4.0,并且我有一个<p:tree>可编辑的节点标签:

<p:tree id="treeSingle" dynamic="true"
    value="#{treeController.treeRoot}" var="node"
    selectionMode="single" selection="#{treeController.selectedNode}">
  <p:treeNode>
    <p:inplace editor="true" event="dblclick">
      <p:ajax event="save" listener="#{treeController.onSaveNodeLabel}" update="@this" />
      <p:inputText value="#{node.label}" />
    </p:inplace>
  </p:treeNode>
</p:tree>

我想要做的是在用户修改 #{node.label} 值时保存它。

listener="#{treeController.onSaveNodeLabel}"调用应该保存修改后的TreeNode标签的方法。所以我在我的treeController课堂上创建了这个方法:

public void onSaveNodeLabel(AjaxBehaviorEvent event) {
    logger.info("onSaveNodeLabel");
    Inplace inplace = (Inplace)event.getSource();
    UITreeNode uiTreeNode = (UITreeNode) inplace.getParent();
    // What next?
}

问题AjaxBehaviorEvent允许我访问org.primefaces.component.tree.UITreeNode但不能访问保存我的数据的org.primefaces.model.TreeNode 。有解决方案TreeNodeAjaxBehaviorEvent?谢谢!

4

1 回答 1

2

只需将 node.label 作为参数发送到您的函数:

#{treeController.onSaveNodeLabel(node.label)}

因此,在您的网页中:

<p:inplace editor="true" event="dblclick">
  <p:ajax event="save" listener="#{treeController.onSaveNodeLabel(node.label)}" update="@this" />
  <p:inputText value="#{node.label}" />
</p:inplace>

在你的 bean 中:

public void onSaveNodeLabel(String nodeLabel) {
    //
}
于 2014-01-22T17:30:15.677 回答