Я пишу какую-то страницу с компонентом дерева поверхностей. Я хочу обновить outputLabel после выбора узла дерева. Ярлык должен отображать имя текущего выбранного узла. Моя проблема заключается в том, что в этом случае управляющий компонент будет запускать прослушиватель в виде первичности. Метод прослушивателя вообще не вызывается. Я могу обновить outputLabel (с текущим значением времени от другого компонента), но я не могу использовать метод прослушивания. Вот моя страница фрагмент():p: tree node select listener не вызывается
<p:tree value="#{directoryTreeBuilder.root}"
var="node"
dynamic="true"
style="border: none;"
selectionMode="single"
selection="#{directoryTreeBuilder.selected}">
<p:ajax event="select"
listener="#{directoryTreeBuilder.onDirSelected}"
update=":currentDir"/>
<p:treeNode>
<h:outputText value="#{node}" />
</p:treeNode>
</p:tree>
...
<h:outputText id="currentDir" value="#{directoryTreeBuilder.selected}" />
Здесь управляемый компонент:
@Named(value = "directoryTreeBuilder")
@SessionScoped
public class DirectoryTreeBuilder implements Serializable {
/**
* Directory facade bean.
*/
@EJB
private DirectoryFacadeLocal dirBean;
/**
* Tree structure root directory.
*/
private TreeNode root;
/**
* Current selected directory.
*/
private DefaultTreeNode selected;
/**
* Bean initialization method.
*/
@PostConstruct
public void init() {
//Root initiation.
}
/**
* Root getter.
* @return root directory with structure;
*/
public TreeNode getRoot() {
return root;
}
/**
* Get selected directory node.
* @return primefaces treenode;
*/
public TreeNode getSelected() {
return selected;
}
public void setSelected(TreeNode selected) {
this.selected = (DefaultTreeNode) selected;
}
/**
* Selected event listener method.
* @param e selection from primefaces
*/
public void onDirSelected(NodeSelectEvent e) {
System.err.println("DIR SELECTED!");
this.selected = (DefaultTreeNode) e.getTreeNode();
}
}
В настоящее время я бегу этот код на Glassfish v4 из NetBeans 8 пакетов. Во-первых, я использую PrimeFaces 4.0, но теперь он работает на PrimeFaces 5.1. Нет эффекта.
UPDATE: полный код страницы: http://pastebin.com/vEPtWtw2
Я думаю, что проблема связана с кодом xhtml, который вы не показывали. – wittakarn
Полный код страницы, добавленный с помощью pastebin (в OP). –