У меня проблема с SelectListener дерева компонентов простого лица.
Обновление: я хочу создать группу и выбрать путь из дерева. Итак, у меня есть имя группы и дерево для пути. После выбора пути под деревом выбранный путь должен отображаться и обновляться с помощью запроса AJAX.
Вот фрагмент моего кода:
<h:form id="groupCreate">
<p:inputText id="createGroupName" value="#{groupContainer.name}" />
<p:tree id="pathTree" update="groupCreate" selectionMode="single"
selection="#{groupContainer.selectedPath}" dynamic="false"
value="#{groupContainer.rootNode}" var="node" cache="false"
nodeSelectListener="#{groupContainer.onNodeSelect}">
<p:treeNode>
<h:outputText value="#{node[1]}" title="#{node[0]}" />
</p:treeNode>
</p:tree>
<!-- Display selected Path from tree -->
<h:outputText value="#{groupContainer.chosenPathString}/>
<p:commandLink id="createButton" .../>
</h:form>
Функция onNodeSelect в моем компоненте выглядит следующим образом:
public void onNodeSelect(NodeSelectEvent event) {
//get the selected data and set it
this.chosenPathString = //selected Text;
}
Обычно это работает - означает, что после AJAX-запроса отображается выбранный путь. Однако если я введу некоторый текст в поле ввода createGroupName
, а затем выберу узел, после запроса AJAX createGroupName
снова будет установлен в значение null.
Таким образом, мой AJAX-запрос на обновление выбранного пути к дереву сбрасывает все мои текущие введенные значения . После некоторой отладки я обнаружил, что запрос AJAX игнорирует все мои введенные значения, потому что они еще не зафиксированы (как если бы я отправил форму). Но как я могу изменить свой код, чтобы заставить это работать?
Буду признателен за любую помощь, и извините за мой плохой английский заранее!