我正在使用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。是否有从TreeNode
到AjaxBehaviorEvent
的解决方案?谢谢!
答案 0 :(得分: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) {
//
}