Bonjour,
est-il possible de charger une feuille de styles CSS dynamiquement grâce à Ajax lorsque l'on utilise JSF ?
J'ai le template suivant :
J'ai également le FacePainter suivant :
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 <html 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"> <f:view /> <h:head> </h:head> <h:body> <f:facet name="last"> <h:outputStylesheet name="/ressources/css/default.css" /> </f:facet> <!-- Bandeau --> <p:layout fullPage="true"> <p:layoutUnit position="north" style="height: 50px;"> <h:form id="menuForm"> <div id="bandeau"> <div id="menu" class="bandeauElement"> <p:commandLink action="#{myBean.allerVersDeuxiemePage}"> <i class="fa fa-arrow-left" style="color: white" /> <f:ajax render="content cssContent contentForm" /> </p:commandLink> </div> </div> </h:form> </p:layoutUnit> <p:layoutUnit position="center"> <h:form id="contentForm"> <ui:insert name="content"> <ui:include src="#{facePainter.mainContent}" /> </ui:insert> </h:form> <ui:insert name="cssContent"> <h:outputStylesheet library="css" name="#{facePainter.cssContent}" /> </ui:insert> </p:layoutUnit> </p:layout> </h:body> </html>
et le bean pour ma page
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 @ManagedBean(name="facePainter") @SessionScoped public class FacePainter { private String mainContent = "ressources/fragments/premierePage.xhtml"; private String cssContent = "ressources/css/default.css"; //getters/setters }
Le changement de page par Ajax semble se faire. Cependant, lorsque je regarde les sources, je n'ai pas le style "deuxiemePage.css". J'ai un <link type="text/css" rel="stylesheet" href="RES_NOT_FOUND" /> à la place.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public void allerVersDeuxiemePage() { facePainter.setMainContent("ressources/fragments/deuxiemePage.xhtml"); facePainter.setCssContent("ressources/css/deuxiemePage.css"); }
Quelqu'un a une idée pour m'aider ? Merci d'avance
Partager