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 :

Déléguer à Spring l'instantiation des actions Struts2 à l'aide d'annotations


Sujet :

Struts 2 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 34
    Par défaut Déléguer à Spring l'instantiation des actions Struts2 à l'aide d'annotations
    Bonjour J'ai une application Struts2 où les actions struts ont été définies dans le fichier struts.xml. Maintenant, je tiens à confier cette tâche à spring afin d'avoir des actions avec un scope session.

    - Cas 1: si j'utilise annotation @Repository ("myAction") j'ai toujours le message d'erreur: Unable to instantiate Action, myAction, defined for 'doAction' in namespace '/omb'doAction

    - Cas n ° 2: si je déclare l'action dans le fichier applicationContext.xml, j'ai un NullPointerException à l'appel de la ligne myService.callMethode (); car myService est null.

    Comment je peux faire cela en utilisant des annotations ? Dans mon application il y en a partout et ce serai trop long de redéfinir tous les services dans le applicationContext.xml

    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
    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
    <?xml version="1.0" encoding="UTF-8" ?>
     
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
    	<constant name="struts.devMode" value="false" />
    	<constant name="struts.action.extension" value="do" />
    	<constant name="struts.custom.i18n.resources" value="com.omb.i18n.StrutsResourceBundle" />
    	<constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" /> 
    	<constant name="struts.objectFactory.spring.autoWire" value="name" />
    	<constant name="struts.i18n.encoding" value="ISO-8859-1" />
    	<constant name="struts.i18n.reload" value="false" />
    	<constant name="struts.configuration.xml.reload" value="false" />
    	<constant name="struts.locale" value="fr" />
    	<constant name="struts.multipart.maxSize" value="100000000000" />
    	<constant name="struts.enable.SlashesInActionNames" value="true" />
        <constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
     
        <constant name="struts.codebehind.classSuffix" value="Controller"/>
    	<constant name="struts.codebehind.action.checkImplementsAction" value="false"/>
    	<constant name="struts.codebehind.action.checkAnnotation" value="false"/>
    	<constant name="struts.codebehind.action.defaultMethodName" value="index"/>
    	<constant name="struts.configuration.classpath.defaultParentPackage" value="rest-default" />
     
    	<package name="default" extends="tiles-default" namespace="/">
     
    		<interceptors>
     
    			<interceptor name="params-filter"
    				class="com.opensymphony.xwork2.interceptor.ParameterFilterInterceptor" />
     
    			<interceptor-stack name="defaultStack">
    				<interceptor-ref name="exception" />
    				<interceptor-ref name="alias" />
    				<interceptor-ref name="servletConfig" />
    				<interceptor-ref name="i18n" />
    				<interceptor-ref name="chain" />
    				<interceptor-ref name="modelDriven" />
    				<interceptor-ref name="fileUpload">
    					<param name="maximumSize">11204928</param>
    				</interceptor-ref>
    				<interceptor-ref name="staticParams" />
    				<interceptor-ref name="conversionError" />
    				<interceptor-ref name="params" />
    				<interceptor-ref name="prepare" />
    				<interceptor-ref name="validation" />
    				<interceptor-ref name="workflow" />
    			</interceptor-stack>
     
    		</interceptors>
     
    		<default-interceptor-ref name="defaultStack" />
     
    		<global-results>
    			<result name="technicalError" type="chain">
    				errorAction
    			</result>
    			<result name="sessionInvalidError" type="tiles">
    				sessionInvalid
    			</result>
    			<result name="blank" type="tiles">blank</result>
    		</global-results>
     
    		<global-exception-mappings>
    			<exception-mapping exception="java.lang.Exception"
    				result="technicalError" />
    			<exception-mapping
    				exception="com.omb.service.exception.UserSessionInvalidException"
    				result="sessionInvalidError" />
     
    		</global-exception-mappings>
     
    	</package>
     
    	<package name="omb" extends="default" namespace="/omb">
    		<action name="doAction" class="myAction" method="{1}">
    			<result name="success" type="redirectAction">
    				<param name="namespace">/omb</param>
    				<param name="actionName">displayResult</param>
    			</result>
    			<result name="error" type="redirectAction">
    				<param name="namespace">/error</param>
    				<param name="actionName">displayError</param>
    			</result>
    		</action>
    	</package>
    </struts>
    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
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
     
    <!DOCTYPE web-app
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd">
     
    <web-app>
     
    	<display-name>MyApplication</display-name>
    	<description>Application OMB</description>
     
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>
    			classpath:applicationContext.xml,
    			classpath:applicationContext-web.xml
    		</param-value>
    	</context-param>
     
    	<context-param>
    		<param-name>org.apache.tiles.DEFINITIONS_CONFIG</param-name>
    		<param-value>/WEB-INF/tiles/tiles-defs.xml</param-value>
    	</context-param>
     
    	<context-param>
    		<param-name>struts.ajax.debug</param-name>
    		<param-value>${struts.ajax.debug}</param-value>
    	</context-param>
     
    	<filter>
    		<filter-name>Acegi Filter Chain Proxy</filter-name>
    		<filter-class>
    			org.acegisecurity.util.FilterToBeanProxy
    		</filter-class>
    		<init-param>
    			<param-name>targetClass</param-name>
    			<param-value>
    				org.acegisecurity.util.FilterChainProxy
    			</param-value>
    		</init-param>
    	</filter>
     
    	<filter>
        	<filter-name>struts2</filter-name>
        	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    	</filter>
     
    	<filter-mapping>
    		<filter-name>Acegi Filter Chain Proxy</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
     
    	<filter-mapping>
    		<filter-name>struts2</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
     
    	<!-- Java Melody filter mapping -->   
        <filter-mapping>     
              <filter-name>monitoring</filter-name>     
              <url-pattern>/*</url-pattern>   
        </filter-mapping>
     
    	<listener>
    		<listener-class>
    			com.omb.listener.ApplicationListener
    		</listener-class>
    	</listener>
     
    	<listener>
    		<listener-class>
    			org.apache.struts2.tiles.StrutsTilesListener
    		</listener-class>
    	</listener>
     	
    	<!--  listener>
    		<listener-class>
    			org.springframework.web.context.ContextLoaderListener
    		</listener-class>
    	</listener-->
    	<listener>
    		<listener-class>
    			org.springframework.web.context.request.RequestContextListener
    		</listener-class>
    	</listener>
     
    	<welcome-file-list>
    		<welcome-file>index.jsp</welcome-file>
    	</welcome-file-list>
    </web-app>
    MyAction.java
    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
     
    package com.omb.actions;
     
    @Repository("myAction")
    @Scope("session")
    public class MyAction extends ActionSupport {
     
        @Qualifier("myService")
        private MyService myService;
     
        public String execute() throws Exception {
    		myService.callMethode();
            return SUCCESS;
        }
     
     
        public MyService getMyService() {
            return this.myService;
        }
     
        public void setMyService(MyService myService) {
            this.myService = myService;
        }
    }

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 34
    Par défaut
    J'ai trouvé la solution...j'ai oublié d'ajouter <context:component-scan base-package="com.omb.actions" /> dans le fichier applicationContext.xml !!

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 34
    Par défaut
    Afin d’affiner la réponse voici ce que j'ai mis car les annotations que j'avais n'étaient pas correct.

    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
    package com.omb.actions;
     
    public class MyAction extends ActionSupport {
     
        @Autowired
        private MyService myService;
     
        public String execute() throws Exception {
    		myService.callMethode();
            return SUCCESS;
        }
     
     
        public MyService getMyService() {
            return this.myService;
        }
     
        public void setMyService(MyService myService) {
            this.myService = myService;
        }
    }
    et ajouter ça dans le fichier applicationContext.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <context:component-scan base-package="com.omb.controller" />
     
    <bean id="myAction" class="package com.omb.actions.MyAction" scope="session"/>

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/01/2013, 17h55
  2. [servlet][struts] Appelle des actions/servlet
    Par AnKhCHFR dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 07/03/2005, 12h55
  3. [GNU Pascal] [GRX] Effectuer des actions pendant un temps d'arrêt (GRSleep)
    Par the_guitariste dans le forum Autres IDE
    Réponses: 3
    Dernier message: 03/04/2004, 18h21
  4. [FLASH MX2004] Hierarchisation des actions
    Par bolo dans le forum Flash
    Réponses: 9
    Dernier message: 06/11/2003, 16h02

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