Pb avec les balises <ui:include>
Bonjour, dès que j'ajoute Spring Sécurité à mon projet: j'ai une erreur.
mon web.xml:
Code:
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
|
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<!-- Application -->
<display-name>Test</display-name>
<welcome-file-list>
<welcome-file>lanceur.jsp</welcome-file>
</welcome-file-list>
<!-- Spring -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<!-- Chargement de tout fichier xml commençant par applicationContext -->
<param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>
<!-- spring Security -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/jsf-tag/springsecurity.taglib.xml</param-value>
</context-param>
<!-- Spring log -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<!-- Session configuration -->
<session-config>
<session-timeout>60</session-timeout>
</session-config>
<!-- JSF -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<!-- reload , ne pas commiter-->
<context-param>
<param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
<param-value>10</param-value>
</context-param>
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
</web-app> |
Le fichier de configuration pour la sécurité:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<http auto-config="true">
<intercept-url pattern="/**" access="ROLE_USER"/>
<intercept-url pattern="/**" access="ROLE_ADMIN"/>
</http>
<authentication-manager alias="authenticationManager">
<authentication-provider>
<user-service>
<user name="admin" password="admin" authorities="ROLE_ADMIN"/>
<user name="user" password="user" authorities="ROLE_USER"/>
</user-service>
</authentication-provider>
</authentication-manager>
</beans:beans> |
Le fichier de tag JSF (pour Spring sécurité):
Code:
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
|
<?xml version="1.0"?>
<!DOCTYPE facelet-taglib PUBLIC
"-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
"http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
<facelet-taglib>
<namespace>http://www.springframework.org/security/tags</namespace>
<tag>
<tag-name>authorize</tag-name>
<handler-class>org.springframework.faces.security.FaceletsAuthorizeTagHandler</handler-class>
</tag>
<function>
<function-name>areAllGranted</function-name>
<function-class>org.springframework.faces.security.FaceletsAuthorizeTagUtils</function-class>
<function-signature>boolean areAllGranted(java.lang.String)</function-signature>
</function>
<function>
<function-name>areAnyGranted</function-name>
<function-class>org.springframework.faces.security.FaceletsAuthorizeTagUtils</function-class>
<function-signature>boolean areAnyGranted(java.lang.String)</function-signature>
</function>
<function>
<function-name>areNotGranted</function-name>
<function-class>org.springframework.faces.security.FaceletsAuthorizeTagUtils</function-class>
<function-signature>boolean areNotGranted(java.lang.String)</function-signature>
</function>
<function>
<function-name>isAllowed</function-name>
<function-class>org.springframework.faces.security.FaceletsAuthorizeTagUtils</function-class>
<function-signature>boolean isAllowed(java.lang.String, java.lang.String)</function-signature>
</function>
</facelet-taglib> |
Et la page XHTML à afficher:
Code:
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
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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"
xmlns:security="http://www.springframework.org/security/tags">
<f:view locale="#{homeSession.locale}">
<f:loadBundle var="resHome" basename="#{homeSession.resource}"/>
<h:head>
</h:head>
<h:body>
<!-- Menu -->
<p:outputPanel id="form_panel">
<ui:insert>
<security:authorize ifAnyGranted="ROLE_ADMIN,ROLE_USER">
<ui:include src="/html/include/menu.xhtml"/>
</security:authorize>
</ui:insert>
</p:outputPanel>
<!-- Formulaire -->
<p:outputPanel id="body_panel">
<!-- Gestion du calendrier -->
<p:outputPanel id="gestion_du_calendrier_panel" rendered="#{homeSession.isGestionDuCalendrier}">
<h:outputText value="Gestion du calendrier" />
</p:outputPanel>
<!-- Gestion des remises -->
<p:outputPanel id="gestion_des_remise_panel" rendered="#{homeSession.isGestionDesRemises }">
<h:outputText value="Gestion des remises" />
</p:outputPanel>
<!-- Gestion des devises -->
<p:outputPanel id="gestion_des_devises_panel" rendered="#{homeSession.isGestionDesDevises}">
<h:outputText value="Gestion des devises" />
</p:outputPanel>
<!-- Gestion de la main d'oeuvre -->
<p:outputPanel id="gestion_de_la_main_oeuvre_panel" rendered="#{homeSession.isGestionDeLaMainOeuvre}">
<h:outputText value="Gestion de la main d'oeuvre" />
</p:outputPanel>
</p:outputPanel>
</h:body>
</f:view>
</html> |
La ligne qui pose problème, car quand elle est là, plus rien ne marche:
Code:
1 2
|
<ui:include src="/html/include/menu.xhtml"/> |
l'erreur dans Eclipse quand on lance JBoss 7:
Code:
"Servlet.service()"
Et en analysant en debbugger le code, on a:
Code:
1 2
|
requestContext.getViewScope().put(SERIALIZED_VIEW_STATE, view); |
requestcontext est null.
Il est donné par:
Code:
1 2
|
RequestContext requestContext = RequestContextHolder.getRequestContext(); |
si quelqu'un a une idée, merci d'avance.