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

Struts 2 Java Discussion :

mon interceptor ne fonctionne pas


Sujet :

Struts 2 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Par défaut mon interceptor ne fonctionne pas
    Bonjour,


    J'ai une page de Login qui fait appel à une action LoginAction. J'ai créé une classe Interceptor mais visiblement j'ai des erreurs dès que je démarre mon serveur JBOSS :

    Voici mon code :

    Struts.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
     
    <package name="person" extends="struts-default" namespace="/login">    
     
    		<result-types> 
    			<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/> 
    		</result-types>
     
    		<global-results>
                <result name="login" type="tiles">login.page</result>
            </global-results>
     
    		<interceptors>  
    			<interceptor name="logins" class="com.acticall.report.application.action.interceptor.LoginInterceptor" />  
     
                 <interceptor-stack name="loginstack">  
                     <interceptor-ref name="defaultStack" />  
                     <interceptor-ref name="logins" />  
                 </interceptor-stack>  
     
             </interceptors>  
             <default-interceptor-ref name="loginstack" />         		 		 
     
    		<action name="doLogin" class="actionLogin" method="execute">				
    			<result name="input" type="tiles">login.page</result>
    			<result name="error" type="tiles">login.page</result>					
    			<result type="tiles">welcome.page</result>
            </action>      
        </package>
    LoginInterceptor
    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
     
    package com.acticall.report.application.action.interceptor;
     
    import java.util.Map;
     
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionInvocation;
    import com.opensymphony.xwork2.interceptor.Interceptor;
     
    public class LoginInterceptor implements Interceptor {
     
    	private static final long serialVersionUID = 1L;
     
    	public void destroy() {			
    	}
     
    	public void init() {		
    	}
     
    	@SuppressWarnings("unchecked")
    	public String intercept(ActionInvocation invocation) throws Exception {
    	    @SuppressWarnings("unused")
    		final ActionContext context = invocation.getInvocationContext ();
    	    Map session = context.getSession();
     
    	    if(session != null){
    	    	Boolean isAuthenticated = (Boolean) session.get("isAuthenticated");
    	    	if(isAuthenticated != null && !isAuthenticated){
    	    		return "login";
    	    	}	    	
    	    	return invocation.invoke ();
    	    }        
    	    return invocation.invoke ();
    	}
    }

    Voici mon erreur :
    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
     
    09:42:30,135 INFO  [STDOUT] 23-06-2008 09:42:30:135 5281 DEBUG com.opensymphony.xwork2.config.providers.XmlConfigurationProvider  - Loading action configurations from: struts.xml
    09:42:30,151 INFO  [STDOUT] 23-06-2008 09:42:30:151 5297 DEBUG com.opensymphony.xwork2.config.providers.XmlConfigurationProvider  - Loading action configurations from: struts/admin-config.xml
    09:42:30,182 INFO  [STDOUT] 23-06-2008 09:42:30:167 5313 ERROR com.opensymphony.xwork2.util.DomHelper  - The content of element type "package" must match "(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-class-ref?,global-results?,global-exception-mappings?,action*)". at (null:32:15)
    org.xml.sax.SAXParseException: The content of element type "package" must match "(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-class-ref?,global-results?,global-exception-mappings?,action*)".
    	at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    	at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
    	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    	at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source)
    	at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown Source)
    	at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
    	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    	at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    	at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
    	at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:121)
    	at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:830)
    	at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:864)
    	at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:131)
    	at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:100)
    	at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:130)
    	at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
    	at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)
    	at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)
    	at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)
    	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
    	at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
    	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
    	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3722)
    	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4367)
    	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:790)
    	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:770)
    	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:553)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:585)
    Quelqu'un peut il me dire s'il s'agit d'un problème au niveau de mon fichier XML ? visiblement oui mais je ne sais pas ou ......




  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Par défaut
    J'ai un élément de réponse :

    quand j'enlève le global-forward je n'ai pas d'erreurs !!!

    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
     
    <package name="person" extends="struts-default" namespace="/login">    
     
    		<result-types> 
    			<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/> 
    		</result-types>
     
            <interceptors>
            	 <interceptor name="login" class="com.acticall.report.application.action.interceptor.LoginInterceptor" />
            </interceptors>
     
    		<action name="doLogin" class="actionLogin" method="execute">
    		 	<interceptor-ref name="login"/> 				
    			<result name="input" type="tiles">login.page</result>
    			<result name="error" type="tiles">login.page</result>					
    			<result name="success" type="tiles">welcome.page</result>
            </action>      
        </package>
    En revanche impossible de rediriger sur une page puisque je n'ai rien définit en global !!!


  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Par défaut
    je voulais dire <global-results> ....

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Par défaut


    Bon je n'y comprends vraiment rien ! Le code suivant fonctionne sans grosse modification !!!

    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
     
     
     <package name="person" extends="struts-default" namespace="/login">    
     
    		<result-types> 
    			<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/> 
    		</result-types>
     
            <interceptors>
            	 <interceptor name="login" class="com.acticall.report.application.action.interceptor.LoginInterceptor" />
     
                <interceptor-stack name="defaultLoginStack">
                    <interceptor-ref name="servlet-config" />
                    <interceptor-ref name="params" />
                    <interceptor-ref name="login" /> <!-- Our LoginInterceptor -->
                    <interceptor-ref name="prepare" />
                    <interceptor-ref name="chain" />
                    <interceptor-ref name="model-driven" />                
                    <interceptor-ref name="static-params" />
                    <interceptor-ref name="params" />
                    <interceptor-ref name="conversionError" />  
                    <!-- <interceptor-ref name="validation" /> -->                             
                    <interceptor-ref name="workflow" />
                </interceptor-stack>
     
            </interceptors>
     
    		<global-results>
                <result name="login" type="tiles">login.page</result>
                <result name="login-success" type="tiles">welcome.page</result>
            </global-results>
     
    		<action name="doLogin" class="actionLogin" method="execute">
    		 	<interceptor-ref name="defaultLoginStack"/> 				
    			<result name="input" type="tiles">login.page</result>
    			<result name="error" type="tiles">login.page</result>					
    			<result type="tiles">welcome.page</result>
            </action>
     
        </package>
    Bon maintenant que çà marche ....

  5. #5
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    dis moi, lis tu vraiment les messages d'erreurs?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.xml.sax.SAXParseException: The content of element type "package" must match "(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-class-ref?,global-results?,global-exception-mappings?,action*)".
    N'est ce pas assez frappant comme message?
    Décortiquons le alors.
    Bon on a une erreur xml, et un probleme avec un element package. Cela correspond certainement au package de tes fichiers de conf struts.
    Cet élément package doit contenir des éléments dans un ordre précis, sinon il rale.....
    Dans ton cas le probleme est que par défaut les intercepteurs doivent simplement être défini Avant les résultats globaux.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut
    d'après le message d'erreur ce sont effectivement les éléments XML qui ne sont dans le bon ordre, rien de grave.

    Est-ce que ton interceptor fonctionne ? J'aimerais intercepter les exceptions, rediriger l'utilisateur sur une page spéciale et envoyer un mail à un administrateur. Par contre j'utilise le plugin codebehind, et il me semble avoir lu qu'il y avait un bug avec ce plugin qui empêchait d'ajouter un interceptor personnalisé au stack...

    Est-ce que quelqu'un a réussit à créer un interceptor personnalisé en utilisant le plugin codebehind ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 35
    Par défaut
    Citation Envoyé par seraphon Voir le message
    dis moi, lis tu vraiment les messages d'erreurs?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.xml.sax.SAXParseException: The content of element type "package" must match "(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-class-ref?,global-results?,global-exception-mappings?,action*)".
    N'est ce pas assez frappant comme message?
    Décortiquons le alors.
    Bon on a une erreur xml, et un probleme avec un element package. Cela correspond certainement au package de tes fichiers de conf struts.
    Cet élément package doit contenir des éléments dans un ordre précis, sinon il rale.....
    Dans ton cas le probleme est que par défaut les intercepteurs doivent simplement être défini Avant les résultats globaux.

    j'ai la même erreur avec des paramètres différents. pouvez-vous m'expliquer le sens?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.xml.sax.SAXParseException: The content of element type "class" must match "(meta*,(cache|jcs-cache)?,(id|composite-id),discriminator?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|any|map|set|list|bag|idbag|array|primitive-array)*,(subclass*|joined-subclass*))".

    voici ma classe PatientInfo.hbm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <hibernate-mapping package="persistance">
    <class name="PatientInfo" table="PatientInfo">
     
    <id name="AccountNumber"  type="string"  > 
    <column name="ACCOUNT_NUMBER"/>
    <generator class="increment" /> 
    </id>
     
    <property name="Ssn" type="string">
     <column name="SSN" sql-type="char(11)" not-null="false"/>
     </property>
    <class/>
    <hibernate-mapping/>
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. la publication de mon appli ne fonctionne pas
    Par tchecko dans le forum Accès aux données
    Réponses: 4
    Dernier message: 07/10/2006, 11h59
  2. Réponses: 1
    Dernier message: 30/08/2006, 19h00
  3. [VB.Net/DataReader] Pourquoi mon ExecuteReader ne fonctionne pas ?
    Par emeraudes dans le forum Accès aux données
    Réponses: 8
    Dernier message: 21/08/2006, 13h38
  4. Réponses: 14
    Dernier message: 17/08/2006, 10h29
  5. mon trigger ne fonctionne pas !
    Par japi33 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 20/03/2006, 21h26

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