onNodeExpand listener in PrimeFaces

mario87b

Aktives Mitglied
Hallo.

Ich habe ein kleines Problem mit den listener eines Trees erstellt mit PrimesFaces.

Der beschriebenen Code ist direkt übernommen aus dem ShowCase Bereich der PrimeFaces WEbseite, eine entsprechende ManageBEan hab ich erstellt.

Das Ganze funktioniert auch wenn die die ajax Elemente weglassen, sobald ich die listenen hinzufüge, meckert der Compiler bereits das die Methoden onNodeExande, usw. (alle 4), nicht gefunden werden.

Das Ganze läuft dann auch nicht mehr.

Weiß jemand Rat, ich nutze noch PrimeFaces 2.2.1. Die Elemete listener sind aber da schon mit drin.

Danke.

Java:
<h:form id="form">

    <p:growl id="messages" showDetail="true" />

    <p:tree value="#{treeBean.root}" var="node" dynamic="true" cache="false"
            selectionMode="single"  selection="#{treeBean.selectedNode}" id="tree">

        <p:ajax event="expand" update=":form:messages" listener="#{treeBean.onNodeExpand}" />
        <p:ajax event="collapse" update=":form:messages" listener="#{treeBean.onNodeCollapse}" />
        <p:ajax event="select" update=":form:messages" listener="#{treeBean.onNodeSelect}" />
        <p:ajax event="unselect" update=":form:messages" listener="#{treeBean.onNodeUnselect}" />

        <p:treeNode>
            <h:outputText value="#{node}" />
        </p:treeNode>
    </p:tree>

</h:form>
 

freez

Top Contributor
Die Fehlermeldungen wären hilfreich. Meist scheitert das an der Methodensignatur. Mir passiert es oft, dass ich ein ActionEvent als Übergabeparameter des Listeners angebe, aber Primefaces will ein NodeExpandEvent oder NodeCollapseEvent. Und somit werden Fehler ala "Finde Methode xy nicht" produziert.
 

mario87b

Aktives Mitglied
Hallo.

Die Fehlermeldung des Debuggers bzw. Compilers lautet.

"Unknown property "onNodeExpand"

Kann ich ja auch verstehen, denn onNodeExpand ist ja eine Methode und kein Attribute der ManagedBean. Aber die Beispiel Bean hat das ebenfalls so implementiert - siehe unten.

Führe ich die Anwendung dennoch aus bekomme ich

<p:ajax> Parent not an instance of ClientBehaviorHolder: org.primefaces.component.tree.Tree@1f5ad2b


Java:
package org.primefaces.examples.view;

import java.io.Serializable;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

import org.primefaces.event.NodeCollapseEvent;
import org.primefaces.event.NodeExpandEvent;
import org.primefaces.event.NodeSelectEvent;
import org.primefaces.event.NodeUnselectEvent;
import org.primefaces.model.DefaultTreeNode;
import org.primefaces.model.TreeNode;

public class TreeBean implements Serializable {

	private TreeNode root;

	private TreeNode selectedNode;

	public TreeBean() {
		root = new DefaultTreeNode("Root", null);
		TreeNode node0 = new DefaultTreeNode("Node 0", root);
		TreeNode node1 = new DefaultTreeNode("Node 1", root);
		TreeNode node2 = new DefaultTreeNode("Node 2", root);

		TreeNode node00 = new DefaultTreeNode("Node 0.0", node0);
		TreeNode node01 = new DefaultTreeNode("Node 0.1", node0);

		TreeNode node10 = new DefaultTreeNode("Node 1.0", node1);
		TreeNode node11 = new DefaultTreeNode("Node 1.1", node1);

		TreeNode node000 = new DefaultTreeNode("Node 0.0.0", node00);
		TreeNode node001 = new DefaultTreeNode("Node 0.0.1", node00);
		TreeNode node010 = new DefaultTreeNode("Node 0.1.0", node01);

		TreeNode node100 = new DefaultTreeNode("Node 1.0.0", node10);
	}

	public TreeNode getRoot() {
		return root;
	}

	public TreeNode getSelectedNode() {
		return selectedNode;
	}

	public void setSelectedNode(TreeNode selectedNode) {
		this.selectedNode = selectedNode;
	}

	public void onNodeExpand(NodeExpandEvent event) {
		FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Expanded", event.getTreeNode().toString());

		FacesContext.getCurrentInstance().addMessage(null, message);
	}

	public void onNodeCollapse(NodeCollapseEvent event) {
		FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Collapsed", event.getTreeNode().toString());

		FacesContext.getCurrentInstance().addMessage(null, message);
	}

	public void onNodeSelect(NodeSelectEvent event) {
		FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Selected", event.getTreeNode().toString());

		FacesContext.getCurrentInstance().addMessage(null, message);
	}

    public void onNodeUnselect(NodeUnselectEvent event) {
		FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Unselected", event.getTreeNode().toString());

		FacesContext.getCurrentInstance().addMessage(null, message);
	}
}
 

sence

Bekanntes Mitglied
Hallo,

gemäß Primefaces 2.2 Dokumentation:
Java:
<p:tree value="#{treeBean.model}" dynamic="true"
	
nodeSelectListener="#{treeBean.onNodeSelect}"
	
nodeExpandListener="#{treeBean.onNodeExpand}"
	
nodeCollapseListener="#{treeBean.onNodeCollapse}">
	
...
</p:tree>

The server side listeners are simple method expressions like;

Java:
public void onNodeSelect(NodeSelectEvent event) {
	
String node = event.getTreeNode().getData().toString();
	
logger.info("Selected:" + node);
}
	
public void onNodeExpand(NodeExpandEvent event) {
	
String node = event.getTreeNode().getData().toString();
	
logger.info("Expanded:" + node);
}
	
public void onNodeCollapse(NodeCollapseEvent event) {
	
String node = event.getTreeNode().getData().toString();
	
logger.info("Collapsed:" + node);
}

in Primefaces 2.2 werden die auszuführenden Listener, als Attribute der Komponente übergeben.
Erst in neueren Primefaces versionen, werden diese als Ajax Event überreicht.

Seite 373
http://primefaces.googlecode.com/files/primefaces_users_guide_2_2.pdf

Grüße
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Redirect im Phase Listener Web Tier 6
A JSF Suche Beispiel für Primefaces Tree als Navigation Web Tier 3
P JSF (Primefaces) SelectOneMenu Value auf Array wird nicht gesetzt Web Tier 0
M JSP PrimeFaces LayoutUnits <- breite lässt sich nicht erzwingen wenn 'center' Web Tier 0
T JSF Primefaces: selectedvalue von "selectmanyCheckbox" geht verloren Web Tier 0
W JSF Primefaces Selection Mode Web Tier 2
W JSF einfache DataTable PrimeFaces Web Tier 1
FINF_AW_Alex JSF PrimeFaces Dialog verlinken Web Tier 3
W JSF Primefaces Web Tier 5
F JSF Problem mit Primefaces Web Tier 7
F JSF Problem mit Primefaces Web Tier 4
S JQuery und Primefaces (Immer wieder Ärger damit) Web Tier 0
S Primefaces commandButton in einem Dialog/Form/PanelGrid führt actionListener nicht aus Web Tier 4
K JSON in Primefaces Table Web Tier 3
C JSF Zusammenarbeit Primefaces und Tomahawk. Web Tier 2
J JSF Grad der Barrierefreiheit von PrimeFaces, ICEFaces, RichFaces und OpenFaces Web Tier 2
P JSF Primefaces Picklist-Ersatz mit vielen Daten Web Tier 4
S primefaces picklist untereinander anordnen Web Tier 6
T JSF Primefaces beim öffnen eines p:dialog wird eine neue View ManagedBean erstellt Web Tier 2
F Primefaces Dialog Web Tier 7
T JSF Primefaces: DataTable Ajax Update - Weiterleitung von anderer Seite Web Tier 11
F Primefaces Datatable => Inplaces Web Tier 3
F Primefaces Datatable Web Tier 6
F JSF Primefaces 3.3 treetable Web Tier 9
F PrimeFaces - selectOneMenu Web Tier 2
F PrimeFaces commandButton und actionListener Web Tier 6
F PrimeFaces p:selectOneMenu funktioniert nicht Web Tier 12
M JSF Dynamische Größe bei Primefaces Komponenten Web Tier 2
P PrimeFaces DataGrid Click "simulieren" Web Tier 5
J JSF2+primefaces? Web Tier 20
H JSF JSF 2.0 (Primefaces) commandLinks mit action="mypage.xhtml" ohne die URL im Browser zu ändern Web Tier 8
S JSF Primefaces Thema, Css wird geladen, nur die Bilder nicht, bzw Resource wird nicht aufgelöst Web Tier 5
F Primefaces Einstieg Web Tier 1
R Primefaces: No Library Found For This Namespace Web Tier 4
M Primefaces COmmandBUtton Web Tier 8
D JSF Ajax mit Facelets (PrimeFaces) Web Tier 4
Z Primefaces sieht grausam aus Web Tier 1
A [PrimeFaces] dataTable mit paginator Probleme Web Tier 2
Z PrimeFaces (/ JSF) Konfigurationsproblem Web Tier 8

Ähnliche Java Themen

Neue Themen


Oben