簡體   English   中英

在Tree內部:如何保存修改后的TreeNode?

[英]Inplace inside Tree : how to save the modified TreeNode?

我正在使用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 是否存在從AjaxBehaviorEvent轉到TreeNode的解決方案? 謝謝!

只需將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>

在你的豆子里:

public void onSaveNodeLabel(String nodeLabel) {
    //
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM