Я использую Primefaces 4.0 и у меня есть <p:tree>
с редактируемым узлом этикеткой:Внутри внутри Дерево: как сохранить измененный TreeNode?
<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
? Благодаря!
Вы хотите сохранить значение # {node.label}, не так ли? – Pellizon
Да, точно. Я уточню свой вопрос. –
Вы пытались передать значение узла методу? например: # {treeController.onSaveNodeLabel (node.label)}, а затем получить его в своем методе и сделать все, что вы хотите – Pellizon