Bonjour tous le monde,
Aujourd'hui j'ai un soucis de rafraichissement de ma page.
En effet j'avais naïvement pensé que facelet et le templating me permettrais de rafraichir uniquement la partie changeante du code... et finalement, ce n'est pas le cas, quand je clique sur une action toute la page se rafraichit.
J'ai donc regarder ce que RichFaces pouvait faire pour moi.
et j'ai constaté qu'il existe un tag include dans a4j.
Trop cool! je vais mettre ca en œuvre et ca devrait marcher... "ou pas"
Donc j'utilise: facelets + jsf + richfaces 3.3.2SR1.
En fait j'ai un managed bean assez bête qui ressemble à ça:
Quand je clique sur le panelMenuItem "Création d'un type d'événement" dans le menu qui ressemble à ça:
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 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.proximeo.restaurant.jsf; /** * * @author Christophe */ public class MenuController { private static final String CREATE_EVENT_TYPE = "/pages/events/type/create.xhtml"; private static final String UPDATE_EVENT_TYPE = "/pages/events/type/update.xhtml"; private static final String DELETE_EVENT_TYPE = "/pages/events/type/delete.xhtml"; private String selectedPage = "/pages/startPage.xhtml"; /** * @return the selectedPage */ public String getSelectedPage() { return selectedPage; } /** * @param aSelectedPage the selectedPage to set */ public void setSelectedPage(String selectedPage) { this.selectedPage = selectedPage; } /** * @return the createEventType */ public void createEventTypePage() { setSelectedPage(CREATE_EVENT_TYPE); } /** * @return the updateEventType */ public void updateEventTypePage() { setSelectedPage(UPDATE_EVENT_TYPE); } /** * @return the deleteEventType */ public void deleteEventTypePage() { setSelectedPage(DELETE_EVENT_TYPE); } }
J'aimerais qu'un peu plus bas, dans le même fichier le contenu de ma page s'affiche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <rich:panelMenuGroup label="Type d'événement"> <rich:panelMenuItem label="Création d'un type d'événement" action="#{menuController.createEventTypePage}"/> <rich:panelMenuItem label="Mise à jour d'un type d'événement" action="#{menuController.updateEventTypePage}"/> <rich:panelMenuItem label="Suppression d'un type d'événement" action="#{menuController.deleteEventTypePage}"/> </rich:panelMenuGroup> (...)
Quand je fais cela j'ai une jolie erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 (...) <a4j:include id="contentPage" viewId="#{menuController.selectedPage}" />
qui se traduit par ce message dans le navigateur:
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 Caused by: javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:83) at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:190) at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47) at com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109) at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47) at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49) at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47) at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273) at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140) at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:116) at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49) at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273) at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140) at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:81) ... 173 more Caused by: javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:83) at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:190) at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47) at com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109) at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47) at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49) at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47) at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273) at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140) at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:116) at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49) at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273) at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140) at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:81) ... 192 more Caused by: javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:83) at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:190) at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47) at com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109) at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47) at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49) at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47) at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273) at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140) at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:116) at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49) at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273) at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140) at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:81) ... 211 more Caused by: javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:83) at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:190) at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47) at com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109) at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47) at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49) at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47) at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273) at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140) at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:116) at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49) at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273) at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140) at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:81) ... 230 more Caused by: javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml at org.ajax4jsf.taglib.html.facelets.IncludeHandler.applyNextHandler(IncludeHandler.java:83) at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:190) at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47) at com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109) at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47) at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49) at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47) at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248) at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294) at com.s
je me suis dit bon je vais mettre directement l'emplacement de page pour faire test, like that:
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 type Rapport d'exception Message DescriptionLe serveur a rencontré une erreur interne () qui l'a empêché de remplir cette requête. Exception javax.servlet.ServletException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml (...) Cause racine javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml Cause racine javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml Cause racine javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml Cause racine javax.faces.FacesException: UIInclude component contentPage could't include page with path /pages/events/type/create.xhtml Cause racine com.sun.facelets.tag.TagAttributeException: /templates/administration.xhtml @96,147 action="#{menuController.createEventTypePage}" Could not Resolve Variable [Overflow]: menuController Cause racine javax.el.ELException: Could not Resolve Variable [Overflow]: menuController Cause racine java.lang.StackOverflowError
et j'ai toujours l'erreur. J'ai donc un peu chercher sur internet et il s'avère que plusieurs personnes ont déjà eu la même erreur mais sans réponse:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <a4j:include id="contentPage" viewId="/pages/events/type/create.xhtml" />
http://community.jboss.org/message/12598
Bref! quelqu'un connait il le problème que je rencontre, ou quelqu'un à t'il une solution pour que je puisse rafraichir qu'une seule partie de ma page et pas la totalité (merci de ne pas me proposer la solution des frames)
Partager