Bonjour !
J'ai 2 entités (Client et Contact), un stateless session bean, un controller jsf, et plusieurs pages jsp...
Un client se connecte, je garde mon controller dans ma session
, je modifie mes données, et visualise les contacts que je peux également modifier....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 @ManagedBean @SessionScoped public class AccountController extends AbstractController
Je voudrais pouvoir recharger (ou rafraichir mon stateless bean) lorsque je navigue dans mes pages pour voir si des modifications ont été réalisées entre temps....
Pour l'instant, dans mon stateless je rechargeais toujours mon entity en créant une autre instance :
Puis j'ai pensé à faire de cette manière :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 @Override public Client findClient(int id) { Client client = em.find(Client.class, id); return client; } @Override public List<Contact> findContacts(Client client) { return findClient(client.getId).getContactList(); } @Override public Client refreshClient(Client client) { return findClient(client.getId); }
Mais là... une belle petite exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 @Override public Client findClient(int id) { Client client = em.find(Client.class, id); return client; } @Override public List<Contact> findContacts(Client client) { em.refresh(client); return client.getContactList(); } @Override public Client refreshClient(Client client) { em.refresh(client); return client; }
Donc, il est possible de rafraichir qu'après un "persist" ou un "merge"...java.lang.IllegalArgumentException: Can not refresh not managed object
Alors, est-ce que ma 1ère méthode est bonne ?
Merci
Partager