Bonjour,
J'ai un problème récurrent qui arrive sur un problème particulier de changement de page.
J'ai une page qui contient une liste d'objets dans un dataTable (primefaces), chaque objet de la liste peut être accédé via une petite loupe permettant de visualiser le détail de l'objet en question dans une autre page.
Le problème que je rencontre est que lorsque j'appelle la nouvelle page, la liste des objets est appelée une nouvelle fois alors que ça ne devrai pas arriver.
Bean gérant les listes :
vue contenant le dataTable :
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 @Controller @Scope("request") public class ServiceApplicationBean extends ServiceBean { private static final long serialVersionUID = 5309440553432239558L; public static ServiceApplicationBean getBean() { FacesContext context = FacesContext.getCurrentInstance(); return (ServiceApplicationBean) context.getApplication().evaluateExpressionGet( context, "#{serviceApplicationBean}", ServiceApplicationBean.class); } @Autowired private IApplicationFactoryService applicationFactoryService; private List<Application> applicationList; ... public IApplicationFactoryService getApplicationFactoryService() { return applicationFactoryService; } public void setApplicationFactoryService(IApplicationFactoryService applicationFactoryService) { this.applicationFactoryService = applicationFactoryService; } //méthode qui permet de récupérer l'ensemble des applications public List<Application> getApplicationList() { if(this.applicationList == null){ this.applicationList = this.applicationFactoryService.getApplicationService().getAllApplications(); } return this.applicationList; } ...
bean assurant la navigation :
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 <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui"> <p:panel style="margin: 5px;" header="#{lang['available_applications']}"> <p:dataTable value="#{serviceApplicationBean.applicationList}" var="appli" scrollable="true" scrollHeight="450" sortMode="multiple"> ...... <!-- lors du clic sur commandLink, j'ai l'impression qu'il recharge la liste avant de naviguer vers la page suivante --> <p:column style="width: 3%"> <p:commandLink styleClass="ui-icon ui-icon-search" title="#{lang['show']}" update="@form" process="@this" style="margin: 0 auto;" action="#{pageBean.gotoApplicationApplication(appli)}"/> </p:column> .... </p:dataTable> </p:panel> </ui:composition>
Mes beans sont gérés par spring.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 @Controller @Scope("session") public class PageBean implements Serializable{ //méthode appelée par la premiere vue pour accéder au détail de l'application public void gotoApplicationApplication(Application appli) { Application selected = this.applicationFactoryService .getApplicationService().getApplicationDetail(appli); if (selected != null) { ApplicationBean.getBean().setSelected(selected); this.gotoPage(CENTER_APPLICATION_APPLICATION); } } ......
J’espère que j'ai été clair. Je ne sais pas si c'est un problème qui est rencontré régulièrement ailleur, j'ai peut être fait une mauvaise construction quelque part. Si quelqu’un pouvait m'éclairer ce serait cool merci
Partager