# JSF: Datatable Links mit Properties



## aemik (11. Nov 2008)

Hallo,

Habe in JSF eine Datatable, die Datensätze anzeigt. Nach jedem Datensatz soll ein Button anzgezeigt werden, mit dem man den Datensatz löschen kann. Mir ist nicht klar wie ich jedem einzelnen Button die jeweilige ID des Datensatzes mitgeben kann, so dass ich in meiner ManagedBean den jeweiligen Datensatz dann löschen kann.

Danke
aemik


----------



## jemand aus dem wald (11. Nov 2008)

```
<h:dataTable var="item" values="...">
  ...

  <h:column>
    ...

    <h:commandButton action="#{remover.remove}" value="Löschen">
      <f:setPropertyActionListener value="#{item.id}" target="#{remover.itemId}" />
    <h:commandButton>
  </h:column>

  ...
</h:dataTable>
```


```
public class Remover {
  
  private Long itemId;

  public Long getItemId() {
    return itemId;
  }

  public void setItemId(Long itemId) {
    this.itemId = itemId;
  }

  public String remove() {
    // "itemId" ist nun die ID des Items, das gelöscht werden soll. Der spezielle ActionListener
    // wird ausgeführt sobald der Button geklickt wird (bzw. sobald der Klick halt am Server 
    // behandelt wird) und injiziert die ID des aktuellen Items (siehe Attribute und deren
    // Expressions).
 
    // ...
  }
  
}
```


----------



## aemik (12. Nov 2008)

Super! Vielen Dank! Das ist eine sehr einfache Lösung. Hatte zwar noch andere Lösungswege gefunden aber die waren recht aufwendig.
Musste jedoch auf JSF 1.2 updaten


----------



## jemand aus dem wald (12. Nov 2008)

Naja, eine derartige Komponente ist ja auch ganz leicht selbst implementiert. Die kann man sozusagen auch relativ einfach backporten, bzw. MyFaces Tomahawk bringt eine ganz ähnlichen Listener mit (t:updateActionListener), wobei es natürlich fragwürdig ist, ob man jetzt wegen diesen einem Listener eine zusätzliche Bibliothek ins Projekt packt. Facelets bringt den f:setPropertyActionListener auch in JSF 1.1 mit.

Also folgende Alternativen würden dir in JSF 1.1 zur Verfügung stehen:
- Verwendest du Facelets? Wenn ja, dann kannst ohnehin ganz normal f:setPropertyActionListener verwenden.
- Verwendest du MyFaces Tomahawk (od. eine vergleichbare Bibliothek)? Wenn ja, dann kannst Listener ala t:updateActionListener aus derartigen Bibliotheken verwenden.
- Ansonsten kannst dir das auch noch immer selbst implementieren, ist ja kein unüberwindbarer Aufwand.


----------

