[rd_jsfsquad] Vraagje JSF DataTable - updaten List

  • From: Steve Schols <steve.schols@xxxxxxxxx>
  • To: rd_jsfsquad <rd_jsfsquad@xxxxxxxxxxxxx>
  • Date: Tue, 2 Feb 2010 19:02:04 +0100

Hallo,

Dit is waarschijnlijk een noobie-question ... maar toch...

Ik ben terug bezig aan die ext-val poc om de navigatie verder uit te werken
en een correct gebruik van JSF concepten te hanteren.

Ik heb nu een Session-scoped PersonListBean welke mijn List bijhoudt van
Person objecten. Deze gebruik ik om de lijst van personen te tonen in de
datatable component.
<t:dataTable value="#{personListBean.persons}" var="person"...
In de constructor van deze managed bean haal ik alle personen op via een
DAO. Ik vermoed, gezien dat deze een Session-scoped bean is, dat deze
constructor slechts één maal per sessie wordt uitgevoerd.

Daarenboven heb ik een Request-scoped PersonBean waarin ik een Person object
steek.
Wanneer ik op een detail-knop klik in de DataTable, verwijs ik door naar
personBean.showDetail() via een actionListener op de commandLink component.
public void showDetail(ActionEvent event) {
this.person = (Person) ((UIData)
event.getComponent().getParent().getParent()).getRowData();
}

Bij het verwijderen vanuit de DataTable roep ik ook de getRowData() methode
op en voer ik daarna het volgende uit:
personDAO.delete(this.person);
Ik dacht dat de DataTable na dit verwijderen geüpdate zou zijn, maar die is
natuurlijk niet rechtstreeks gekoppeld aan de Map van Person objecten die in
de DAO zit.

Hoe kan ik op de beste of meest gebruikte manier de PersonListBean oproepen
om opnieuw een loadAll() te gaan doen of de persoon ook daar uit te
verwijderen?
Rudy sprak over Bean Injection, maar is dit ook beschikbaar buiten JEE 6 in
Tomcat 6.0?

Iemand tips over hoe dergelijke zaken meest worden aangepakt?
Ook voor het klikken op een wijzig-knop om naar een editeerbaar scherm te
gaan vanuit een raadpleegscherm van een persoon zit ik nog in de problemen.
De PersonBean is wel Request-scoped maar ik dacht dat dit OK is. Ik ben dus
bij het klikken op de commandButton "Wijzig" de Person instance terug kwijt.

Alvast bedankt voor de info.

Groetjes,

Steve

Other related posts: