Bonjour,
j'utilise une datatable pour afficher divers données mais j'ai remarqué que la datatable faisait plusieurs fois appel au getter pour obtenir la liste a afficher.
ma jsp : j'ai supprimé ce qui ne me paraisait pas utile
Losque j'affiche ma jsp j'ai deja fais 3 appels au getter de la liste :
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
20
21
22
23
24 <%--BODY--%> <div id="body"> <h:dataTable id="Account" width="100%" value="#{AccountManagedBean.accountEntityList}" var="uneLigne" rules="rows" > <h:column> <f:facet name="header"> <h:outputText value="numero de compte"/> </f:facet> <h:form> <h:commandLink action="#{AccountManagedBean.showDetails}"> <h:outputText value="#{uneLigne.account}"/> </h:commandLink> </h:form> </h:column> <h:column> <f:facet name="header"> <h:outputText value="description"/> </f:facet> <h:outputText value="#{uneLigne.description}"/> </h:column> </h:dataTable> </div> </body>
mon bean:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 10:49:42,484 INFO [STDOUT] UserAccountsBean constructor 10:49:42,484 INFO [STDOUT] getAccountEntityList 10:49:42,505 INFO [STDOUT] getAccountEntityList 10:49:42,515 INFO [STDOUT] getAccountEntityList
et mon managedbean :
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 @Stateful public class UserAccountsBean implements UserAccountsBeanLocal { @PersistenceContext(unitName ="Mes_Tables") private EntityManager em; private UserAccountsEntity userAccountsEntity = new UserAccountsEntity(); public UserAccountsBean() { System.out.println("UserAccountsBean constructor"); } public void populate(){ ici je rempli ma base pour les tests } public UserAccountsEntity getUserAccountEntity(String login){ Query query = em.createQuery("SELECT a FROM UserAccountsEntity a WHERE a.login=:login"); query.setParameter("login", login); int a=0; try { //TODO single result userAccountsEntity=(UserAccountsEntity)query.getResultList().get(0); //.getSingleResult(); a=userAccountsEntity.getAccountsEntity().size(); } catch (NoResultException nre){ } return userAccountsEntity; } }
Et lorsque je fais appel a showDetails, la c'est le ponpon je fais au moins 15 appels au getter de la liste.
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 public class AccountManagedBean { @EJB private UserAccountsBeanLocal userAccountsBean; private UserAccountsEntity userAccountsEntity = new UserAccountsEntity(); private final Principal user; public AccountManagedBean() { /*Save the principal's user*/ FacesContext fc = FacesContext.getCurrentInstance(); user = fc.getExternalContext().getUserPrincipal(); } public String showDetails() { System.out.println("showDetails"); FacesContext fc = FacesContext.getCurrentInstance(); HtmlDataTable selectedAccount = (HtmlDataTable) fc.getViewRoot().findComponent("Account"); AccountEntity account = (AccountEntity)selectedAccount.getRowData(); if(account!=null) { System.out.println("selected account ="+account.getId()); } return "showDetails"; } public List<AccountEntity> getAccountEntityList() { System.out.println("getAccountEntityList"); userAccountsBean.populate(); userAccountsEntity = userAccountsBean.getUserAccountEntity(user.getName()); List<AccountEntity> maliste = new ArrayList<AccountEntity>(); maliste= userAccountsEntity.getAccountsEntity(); return maliste; } }
est ce normal ???
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 11:05:15,663 INFO [STDOUT] getAccountEntityList 11:05:15,673 INFO [STDOUT] getAccountEntityList 11:05:15,685 INFO [STDOUT] getAccountEntityList 11:05:15,693 INFO [STDOUT] getAccountEntityList 11:05:15,702 INFO [STDOUT] getAccountEntityList 11:05:15,709 INFO [STDOUT] getAccountEntityList 11:05:15,715 INFO [STDOUT] getAccountEntityList 11:05:15,715 INFO [STDOUT] getAccountEntityList 11:05:15,725 INFO [STDOUT] getAccountEntityList 11:05:15,735 INFO [STDOUT] getAccountEntityList 11:05:15,745 INFO [STDOUT] getAccountEntityList 11:05:15,755 INFO [STDOUT] getAccountEntityList 11:05:15,765 INFO [STDOUT] getAccountEntityList 11:05:15,775 INFO [STDOUT] getAccountEntityList 11:05:15,785 INFO [STDOUT] getAccountEntityList 11:05:15,785 INFO [STDOUT] showDetails 11:05:15,785 INFO [STDOUT] selected account =3 11:05:15,805 INFO [STDOUT] getAccountEntityList 11:05:15,805 INFO [STDOUT] getAccountEntityList 11:05:15,825 INFO [STDOUT] getAccountEntityList
Partager