【发布时间】:2014-01-22 15:04:42
【问题描述】:
我正在使用 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)} 然后在你的方法中接收它并做你想做的任何事情
-
你是对的,它有效!谢谢!
-
不客气!请标记为对其他人有用的答案。
标签: jsf jsf-2 primefaces tree inplace-editing