IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Problème d'affichage avec rich:modal et session timeOut


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 26
    Par défaut Problème d'affichage avec rich:modal et session timeOut
    Bonjour à tous,

    J'ai rencontré un problème assez étrange.

    En naviguant sur mon application, lorsque la session expire, je suis redirigé vers une page d'authentification.

    Normal donc.

    Mais si au moment de l'expiration une fenêtre rich:modal était ouverte, en retournant sur la page contenant cette modal, la page ne s'affiche plus comme avant.

    Il n'y a plus de style sur la page et le contenu des fenêtres modals est affiché.

    Je ne sais pas si je me suis bien fait comprendre

    Merci

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Non pas trop

    avec un bout de code et le détail de ton environnement technique serait le bienvenue.

  3. #3
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 26
    Par défaut
    Merci beaucoup de répondre en tout cas,

    Mon environnement technique :
    - Rich:faces 3.3
    - JSF 1.2
    - Spring Security


    Mon fichier web.xml
    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
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
     
     
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    	version="2.5">
    	<display-name>Citylife Back Office</display-name>
    	<context-param>
    		<param-name>webAppRootKey</param-name>
    		<param-value>Citylife-bo</param-value>
    	</context-param>
    	<context-param>
    		<param-name>log4jConfigLocation</param-name>
    		<param-value>classpath:log4j.properties</param-value>
    	</context-param>
    	<context-param>
    		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    		<param-value>.xhtml</param-value>
    	</context-param>
    	<context-param>
    		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    		<param-value>client</param-value>
    	</context-param>
    	<context-param>
    		<param-name>facelets.DEVELOPMENT</param-name>
    		<param-value>false</param-value>
    	</context-param>
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>classpath:appContext.xml</param-value>
    	</context-param>
    	<context-param>
    		<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
    		<param-value>com.sun.facelets.FaceletViewHandler</param-value>
    	</context-param>
    	<filter>
    		<filter-name>MyFacesExtensionsFilter</filter-name>
    		<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
    		<init-param>
    			<description>Set the size limit for uploaded files.
    				Format: 10 - 10
    				bytes
    				10k - 10 KB
    				10m - 10 MB
    				1g - 1 GB
            </description>
    			<param-name>uploadMaxFileSize</param-name>
    			<param-value>50m</param-value>
    		</init-param>
    	</filter>
    	<filter>
    		<display-name>RichFaces Filter</display-name>
    		<filter-name>richfaces</filter-name>
    		<filter-class>org.ajax4jsf.Filter</filter-class>
    		<init-param>
    			<param-name>createTempFiles</param-name>
    			<param-value>true</param-value>
    		</init-param>
    		<init-param>
    			<param-name>maxRequestSize</param-name>
    			<param-value>70000000</param-value>
    		</init-param>
    	</filter>
    	<filter-mapping>
    		<filter-name>richfaces</filter-name>
    		<servlet-name>FacesServlet</servlet-name>
    		<dispatcher>REQUEST</dispatcher>
    		<dispatcher>FORWARD</dispatcher>
    		<dispatcher>INCLUDE</dispatcher>
    	</filter-mapping>
    	<filter-mapping>
    		<filter-name>MyFacesExtensionsFilter</filter-name>
    		<servlet-name>FacesServlet</servlet-name>
    	</filter-mapping>
    	<filter-mapping>
    		<filter-name>MyFacesExtensionsFilter</filter-name>
    		<url-pattern>/faces/myFacesExtensionResource/*
    		</url-pattern>
    	</filter-mapping>
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
    	<listener>
    		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    	</listener>
    	<listener>
    		<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    	</listener>
    	<servlet>
    		<servlet-name>FacesServlet</servlet-name>
    		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>FacesServlet</servlet-name>
    		<url-pattern>*.jsf</url-pattern>
    	</servlet-mapping>
    	<welcome-file-list>
    		<welcome-file>/index.jsp</welcome-file>
    	</welcome-file-list>
    	<resource-ref>
    		<description>DB Connection</description>
    		<res-ref-name>jdbc/socle_db</res-ref-name>
    		<res-type>javax.sql.DataSource</res-type>
    		<res-auth>Container</res-auth>
    	</resource-ref>
    	<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>
    		<dispatcher>FORWARD</dispatcher>
    		<dispatcher>REQUEST</dispatcher>
    	</filter-mapping>
     
    	<error-page>
    		<error-code>403</error-code>
    		<location>/admin/error/forbidden.jsf</location>
    	</error-page>
    	<error-page>
    		<error-code>500</error-code>
    		<location>/admin/error/error.jsf</location>
    	</error-page>
    	<error-page>
    		<exception-type>java.lang.Exception</exception-type>
    		<location>/admin/error/error.jsf</location>
    	</error-page>
     
    	<mime-mapping>
    		<extension>flv</extension>
    		<mime-type>video/x-flv</mime-type>
    	</mime-mapping>
     
    	<security-constraint>
    		<web-resource-collection>
    			<web-resource-name>no-xhtml-access</web-resource-name>
    			<url-pattern>*.xhtml</url-pattern>
    		</web-resource-collection>
    		<auth-constraint>
    			<description>No direct access to xhtml</description>
    		</auth-constraint>
    	</security-constraint>
    </web-app>
    Exemple de page où je rencontre ce problème:

    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
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
     
     
    <!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:f="http://java.sun.com/jsf/core"
    	xmlns:h="http://java.sun.com/jsf/html"
    	xmlns:ui="http://java.sun.com/jsf/facelets"
    	xmlns:a4j="http://richfaces.org/a4j"
    	xmlns:t="http://myfaces.apache.org/tomahawk"
    	xmlns:rich="http://richfaces.org/rich"
    	xmlns:s="http://jboss.com/products/seam/taglib" contentType="text/html">
     
     
     
     
    	<rich:modalPanel id="usermanagementCreateModal" autosized="true" width="450">
    		<f:facet name="header">
    			<h:outputText value="#{bundle.bo_theme_label_new_modal_title}"/>
    		</f:facet>
    		<f:facet name="controls">
    			<h:panelGroup>
    				<h:graphicImage value="/img/close.png" styleClass="hidelink"
    					id="hidelink_create" />
    				<rich:componentControl for="usermanagementCreateModal" attachTo="hidelink_create"
    					operation="hide" event="onclick" />
    			</h:panelGroup>
    		</f:facet>
    		<ui:include src="usermanagementCreateModal.xhtml" />
    	</rich:modalPanel>
     
     
    	<rich:modalPanel id="usermanagementDeleteModal" autosized="true" width="450">
    		<f:facet name="header">
    			<h:outputText value="#{bundle.bo_user_management_modal_label_delete_title}"/>
    		</f:facet>
    		<f:facet name="controls">
    			<h:panelGroup>
    				<h:graphicImage value="/img/close.png" styleClass="hidelink"
    					id="hidelink_delete" />
    				<rich:componentControl for="usermanagementDeleteModal" attachTo="hidelink_delete"
    					operation="hide" event="onclick" />
    			</h:panelGroup>
    		</f:facet>
    		<ui:include src="usermanagementDeleteModal.xhtml" />
    	</rich:modalPanel>
     
    	<rich:modalPanel id="usermanagementEditModal" autosized="true" width="450">
    		<f:facet name="header">
    			<h:outputText value="#{bundle.bo_user_management_modal_label_edit_title}"/>
    		</f:facet>
    		<f:facet name="controls">
    			<h:panelGroup>
    				<h:graphicImage value="/img/close.png" styleClass="hidelink"
    					id="hidelink_update" />
    				<rich:componentControl for="usermanagementEditModal" attachTo="hidelink_update"
    					operation="hide" event="onclick" />
    			</h:panelGroup>
    		</f:facet>
    		<ui:include src="usermanagementEditModal.xhtml" />
    	</rich:modalPanel>
     
    	<h1><h:outputText value="#{bundle.bo_menu_item_user_management}" /></h1>
     
    	<h:form id="frmMain">
     
    			<h:panelGroup id="errorId">
    				<div style="margin-bottom: 5px">
    				<h:message id="commonError" for="commonError" styleClass="statusError"/>
    				</div>
    			</h:panelGroup>
     
    			<rich:dataTable id="dtbUserBO" value="#{userBOList.allUsers}"
    				var="varUser" rowKeyVar="row" rows="10" styleClass="default" captionClass="captiontitle">
     
    				<f:facet name="caption">
    					<h:outputText value="#{bundle.bo_user_management_label_list_title}" />
    				</f:facet>
     
    				<rich:column sortBy="#{varUser.login}" filterBy="#{varUser.login}"
    					filterEvent="onkeyup">
    					<f:facet name="header">
    						<h:outputText value="#{bundle.bo_user_management_label_login}" />
    					</f:facet>
    					<h:outputText id="login" value="#{varUser.login}" />
    				</rich:column>
     
    				<rich:column sortBy="#{varUser.lastname}"
    					filterBy="#{varUser.lastname}" filterEvent="onkeyup">
    					<f:facet name="header">
    						<h:outputText value="#{bundle.bo_user_management_label_lastname}" />
    					</f:facet>
    					<h:outputText id="lastname" value="#{varUser.lastname}" />
    				</rich:column>
     
    				<rich:column sortBy="#{varUser.firstname}"
    					filterBy="#{varUser.firstname}" filterEvent="onkeyup">
    					<f:facet name="header">
    						<h:outputText value="#{bundle.bo_user_management_label_firstname}" />
    					</f:facet>
    					<h:outputText id="firstname" value="#{varUser.firstname}" />
    				</rich:column>
     
    				<rich:column sortBy="#{varUser.group.label}"
    					filterBy="#{varUser.group.label}" filterEvent="onkeyup">
    					<f:facet name="header">
    						<h:outputText value="#{bundle.bo_user_management_label_role}" />
    					</f:facet>
    					<h:outputText id="role" value="#{varUser.group.label}" />
    				</rich:column>
     
    				<rich:column>
    					<f:facet name="header">
    						<h:outputText
    							value="#{bundle.bo_user_management_label_column_action_title}" />
    					</f:facet>
    					<div class="center">
    						<a4j:commandLink id="editUser" ajaxSingle="true" 
    							title="#{bundle.bo_user_management_tooltip_edit}"
    							oncomplete="#{rich:component('usermanagementEditModal')}.show();" styleClass="btn-action modif">
    							<f:setPropertyActionListener value="#{varUser}"
    								target="#{userBOList.currentUser}" />
    							<f:setPropertyActionListener value="#{varUser.password}"
    								target="#{userBOList.oldPassword}" />
    						</a4j:commandLink>
    						<a4j:commandLink ajaxSingle="true" id="deleteUser" 
    							title="#{bundle.bo_user_management_tooltip_delete}"
    							oncomplete="#{rich:component('usermanagementDeleteModal')}.show();" styleClass="btn-action delete" >
    							<f:setPropertyActionListener value="#{varUser}" target="#{userBOList.currentUser}" />
    						</a4j:commandLink> 
    					</div>
    				</rich:column>
    				<f:facet name="footer">
    					<rich:datascroller renderIfSinglePage="false" maxPages="5" />
    				</f:facet>
    			</rich:dataTable>
     
    		<div class="button-wrapper" >
    			<a4j:commandLink ajaxSingle="true" styleClass="button" 
    				oncomplete="#{rich:component('usermanagementCreateModal')}.show();">
    				<span><h:outputText value="#{bundle.bo_user_management_modal_label_add_title}" /></span>
    			</a4j:commandLink>
    		</div>
     
    		<rich:spacer />
     
     
    	</h:form>
     
    </f:view>

    Une partie de mon fichier context :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
     
    <form-login login-processing-url="/j_spring_security_check"
    			login-page="/admin/login/login.jsf" default-target-url="/admin/index.jsf"
    			authentication-failure-url="/admin/login/login.jsf" always-use-default-target="true"/>
    		<remember-me />
    		<logout logout-success-url="/admin/login/login.jsf" />
    Désolé pour l'explication confuse, mais j'ai du mal à expliquer ce problème.

  4. #4
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 26
    Par défaut
    La page avant l'expiration de la session :




    Cette même page après un timeout et une réauthentification :




    Mais seulement si au moment du Time-out j'étais sur une Pop-up. (qui s'affichent quand on appuie sur modifier, ajouter ...).

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par anthony22 Voir le message
    Bonjour à tous,


    Mais si au moment de l'expiration une fenêtre rich:modal était ouverte, en retournant sur la page contenant cette modal, la page ne s'affiche plus comme avant.


    Merci
    Pourquoi revenir sur la même page lors de l'expiration de session, normalement tu dois redirigé vers la page de login, si la session expire, l'utilisateur n'est plus authentifié donc il n'a pas accès au ressources protégées.

  6. #6
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 26
    Par défaut
    En fait lors de la fin de la session, je suis bien redirigé vers une page de login. Après l'authentification login-mdp, je suis redirigé vers une page de bienvenue et c'est seulement après que je retourne sur la page et que je me retrouve avec cette page étrange.

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par anthony22 Voir le message
    En fait lors de la fin de la session, je suis bien redirigé vers une page de login. Après l'authentification login-mdp, je suis redirigé vers une page de bienvenue et c'est seulement après que je retourne sur la page et que je me retrouve avec cette page étrange.
    change le javax.faces.STATE_SAVING_METHOD à server..

  8. #8
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 26
    Par défaut
    Ok merci, je test ça.

  9. #9
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 26
    Par défaut
    Alors, en fait j'ai désormais une exception lors de mon retour sur cette page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    GRAVE: JSF1054: (Phase ID: RESTORE_VIEW 1, View ID: ) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@4b3c7b]
    25 nov. 2010 09:45:02 org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet FacesServlet a généré une exception
    javax.faces.application.ViewExpiredException: viewId:/admin/content/usermanagement.jsf - View /admin/content/usermanagement.jsf could not be restored.
    En effet, lorsque je suis dans la modal et que la session est finie, je lance une requête. Et c'est à ce moment qu'il me redirige vers la page d'authentification.

Discussions similaires

  1. Problème d'affichage avec rich:inplaceSelect
    Par fastdeath124 dans le forum JSF
    Réponses: 2
    Dernier message: 04/04/2012, 12h04
  2. Réponses: 0
    Dernier message: 14/01/2011, 09h17
  3. Problème d'affichage avec rich:modal et session timeOut
    Par anthony22 dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 24/11/2010, 15h44
  4. Réponses: 6
    Dernier message: 19/10/2004, 13h46
  5. Problème d'affichage avec trace
    Par WriteLN dans le forum Flash
    Réponses: 10
    Dernier message: 22/10/2003, 16h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo