2016-04-22 8 views
1

ich PrimeFaces mit einem p:treeTable:p: TreeTable Senden nicht auf Unterknoten

root 
    Area 
    Equipment 1 
    ... 
    Equipment n 
    Area 2 
    Equipment 1 
    ... 
    Equipment n 
public TreeNode getRoot() { 
    DefaultTreeNode root = new DefaultTreeNode("Root", null); 
    for (Area area : areas) { 
     TreeNode areaNode = new DefaultTreeNode("area", new AreaTreeNode(area), root); 
     root.getChildren().add(areaNode); 
     for (Equipment e : equipments) { 
      TreeNode eNode = new DefaultTreeNode("equipment", new EquipmentTreeNode(e), areaNode); 
      areaNode.getChildren().add(eNode); 
     } 
    } 
    return root; 
} 

Wo AreaTreeNode und EquipmentTreeNode erstrecken sich beide von MipTreeNode das ist einfach eine serializable Bohne.

In meiner .xhtml Datei definiere ich:

<p:treeTable value="#{equipmentsView.root}" var="node" selectionMode="single"> 
    <p:column headerText="Name"> 
     <h:outputText value="#{node.name}" /> 
    </p:column> 
    <p:column> 
     <p:commandLink value="edit" actionListener="#{equipmentsView.edit(node)}" /> 
    </p:column> 
</p:treeTable> 

Also, wenn ich die command klicken ich die Edit-Methode mit dem aktuellen Knoten nennen will:

public void edit(final MipTreeNode n) { 
    System.out.println(n); 
} 

Mein Problem ist, dass Die obige Methode wird nur für AreaTreeNode und nicht für EquipmentTreeNode aufgerufen. Habe ich etwas vergessen?

+0

_ "Hab ich irgendwas verpasst?" _ Sie haben mindestens Versionsinfo verpasst ... Und was haben Sie debuggen? Zwischen dem Klick auf den Button und dem eigentlichen Methodenaufruf (Netzwerkverkehr etc.) gibt es eine Menge zu untersuchen. – Kukeltje

+0

Irgendwelche Fortschritte hier? –

+0

p: treeTable unterstützt Drag & Drop nicht – matthias

Antwort

1

Die p:treeTable hat zwei sehr ähnliche Attribute. Und die docs sind nicht so klar über den Unterschied:

var Name der Anfrage-Bereichs-Variablen verwendet, um jedes treenode beziehen.

nodeVar Name der request-scoped-Variablen, die verwendet wird, um den aktuellen treenode unter Verwendung von EL zu beziehen.

Nach meiner Erfahrung mit PrimeFaces 5.3 var bezieht sich auf das Datenmodell Objekt Recievable über TreeNode.getData() und nodeVar bezieht sich auf die tatsächliche TreeNode Instanz. Vielleicht kannst du letzteres verwenden und deine Bean in deiner Editiermethode auspacken?

Verwandte Themen