Bonjour,
Je suis en train de développer un portlet dans Liferay6.1, en utilisant JSF+Primefaces. J'ai un petit souci avec le Schedule...
Ma liste d'events est remplie (vérifié avec le debug), le ScheduleModel également.
J'ai testé la liste retournée par mon webservice avec une datatable, et je n'ai aucun souci de ce côté là : la datatable est parfaitement remplie et s'affiche bien.
Voici le code :
Managed Bean :
(eventListe est juste utilisé pour ma datatable d'essai)
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104 @ManagedBean (name="affichageCalendrierManagedBean") @ViewScoped public class AffichageCalendrierManagedBean implements Serializable { private static final long serialVersionUID = 1L; IWSSServices wsCtech = new WSServicesAccessor(); private ScheduleModel eventModel; private ScheduleEvent event = new DefaultScheduleEvent(); public int idEventPourAffichage; private List <Evenement> eventListe; /** * Constructeur */ public AffichageCalendrierManagedBean() { init(); } // Getters and Setters public ScheduleModel getEventModel() { return eventModel; } public void setEventModel(ScheduleModel eventModel) { this.eventModel = eventModel; } public ScheduleEvent getEvent() { return event; } public void setEvent(ScheduleEvent event) { this.event = event; } public int getIdEventPourAffichage() { return idEventPourAffichage; } public void setIdEventPourAffichage(int idEventPourAffichage) { this.idEventPourAffichage = idEventPourAffichage; } public List <Evenement> getEventListe() { return eventListe; } public void setEventListe(List <Evenement> eventListe) { this.eventListe = eventListe; } /** * Méthode qui ajoute des ScheduleEvents à l'objet eventModel (utilisé pour contenir * les events affichés dans le Schedule) ou les met à jour * Schedule. * @param actionEvent */ public void addEvent(ActionEvent actionEvent) { if(event.getId() == null) eventModel.addEvent(event); else eventModel.updateEvent(event); event = new DefaultScheduleEvent(); } /** * Méthode appelée par le listener Ajax à la sélection d'un event dans le Schedule * On récupère l'objet TEvenement contenu dans l'event sélectionné et on extrait son * id, qui permettra de le passer en paramètre si l'utilisateur choisit de gérer les souscriptions * @param selectEvent */ public void onEventSelect(ScheduleEntrySelectEvent selectEvent) { event = selectEvent.getScheduleEvent(); Evenement evenementSelected = (Evenement) event.getData(); idEventPourAffichage = evenementSelected.getIdEvenement(); } /** * Méthode d'init de la page * Initialisation des events du Schedule pour affichage */ private void init() { eventModel = new DefaultScheduleModel(); List<Evenement> listOfEvents = new ArrayList<Evenement>(); listOfEvents = wsCtech.getListTEvenements(); eventListe = new ArrayList<Evenement>(); eventListe = listOfEvents; for (Evenement evt : listOfEvents) { eventModel.addEvent(new DefaultScheduleEvent(evt .getLibelleEvenement(), evt.getDateDebutEvenement(), evt .getDateFinEvenement(), evt)); System.out.println(evt.getLibelleEvenement()); } } }
page xhtml
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 <?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <f:view 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" xmlns:aui="http://liferay.com/faces/aui"> <h:head> </h:head> <h:body> <h:form id="formDt"> <p:dataTable id="dtLstEvt" var="evt" value="#{affichageCalendrierManagedBean.eventListe}" widgetVar="evtTable" emptyMessage="Pas d'événements" > <f:facet name="header"> <p:outputPanel> <h:outputText value="#{message.labelRechGlobale} "/> <p:inputText id="globalFilter" onkeyup="evtTable.filter()" /> </p:outputPanel> </f:facet> <p:column id="idEvt" headerText="Id Event" > <h:outputText value="#{evt.idEvenement}" /> </p:column> <p:column id="libelleEvt" filterBy="#{evt.libelleEvenement}" filterMatchMode="contains" headerText="Libellé Evénement" > <h:outputText value="#{evt.libelleEvenement}" /> </p:column> <p:column id="localisationEvt" filterBy="#{evt.localisationEvenement}" filterMatchMode="contains" headerText="Localisation" > <h:outputText value="#{evt.localisationEvenement}" /> </p:column> <p:column id="catEvt" filterBy="#{evt.categorie}" filterMatchMode="contains" headerText="Catégorie" > <h:outputText value="#{evt.categorie}" /> </p:column> <p:column id="datDbtEvt" headerText="Date de début" > <h:outputText value="#{evt.dateDebutEvenement}" > <f:convertDateTime pattern="yyyy/MM/dd" timeZone="Europe/Paris" /> </h:outputText> </p:column> <p:column id="datFinEvt" headerText="Date de fin" > <h:outputText value="#{evt.dateFinEvenement}" > <f:convertDateTime pattern="yyyy/MM/dd" timeZone="Europe/Paris" /> </h:outputText> </p:column> </p:dataTable> </h:form> <h:form id="form"> <p:growl id="messages" showDetail="true" /> <p:schedule value="#{affichageCalendrierManagedBean.eventModel}" widgetVar="mySchedule" aspectRatio="2" id="mySchedule" timeFormat="H:mm" axisFormat="H:mm" locale="fr"> <p:ajax event="eventSelect" listener="#{affichageCalendrierManagedBean.onEventSelect}" update="eventDetails" oncomplete="eventDialog.show()" /> </p:schedule> <p:dialog widgetVar="eventDialog" header="Détails de l'événement" showEffect="clip" hideEffect="clip"> <h:panelGrid id="eventDetails" columns="2"> <h:outputLabel for="title" value="Libellé :" /> <h:outputText id="title" value="#{affichageCalendrierManagedBean.event.title}" /> <h:outputLabel for="from" value="De :" /> <h:outputText id="from" value="#{affichageCalendrierManagedBean.event.startDate}" > <f:convertDateTime pattern="dd/MM/yyyy" /> </h:outputText> <h:outputLabel for="to" value="A :" /> <h:outputText id="to" value="#{affichageCalendrierManagedBean.event.endDate}" > <f:convertDateTime pattern="dd/MM/yyyy" /> </h:outputText> <h:outputLabel for="lieu" value="Lieu :" /> <h:outputText id="lieu" value="#{affichageCalendrierManagedBean.event.data.localisationEvenement}" /> </h:panelGrid> </p:dialog> </h:form> </h:body> </f:view>
Le code xhtml est le même que j'utilise dans une appli JEE (il y a uniquement des balises <f:ajax> en plus pour gérer les modifications des events sur la grille et fonctionne correctement.
Ai-je oublié quelque chose?
Peut être y a t'il un souci avec mes jars importés (dans docroot/WEB-INF/lib)?
javax.faces-2.1.13
liferay-faces-alloy-3.1.0-ga1
liferay-faces-bridge-3.1.0-ga1
liferay-faces-bridge-impl-3.1.0-ga1
liferay-faces-portal-3.1.0-ga1
liferay-faces-util-3.1.0-ga1
primefaces-3.4.2
Merci d'avance
Partager