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 :

Action avec Scope en session


Sujet :

Struts 2 Java

  1. #1
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut Action avec Scope en session
    Bonjour à toutes et à tous,

    Je suis entrain de migrer une appli Struts1 en Struts2.
    A un moment j'ai une action avec un scope en session.

    Comment est ce retranscrit dans Struts2 car je ne trouve pas?

    Le but est bien sur d'avoir un formulaire à plusieurs étapes. Donc que les données ne soient pas perdus entre 2 submit pour une même action.
    Je ne peux pas utiliser de champ caché et repopuler les données dans le bean car j'ai des fichiers en upload à la première page et donc il faut que je me trimballe ces fichiers jusqu'à ma dernière action.

    Edit : Y-a-t-il un moyen de le faire simplement ou suis-je obligé de coder dans l'action en elle même, que je met le bean/action en session. Et de coder un interceptor qui me donnera mon action qui se trouve en session lors d'un submit?

    Merci pour votre aide.
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  2. #2
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 114
    Points
    114
    Par défaut
    Bonjour, tu as un exemple ici

    http://www.developpez.net/forums/sho...d.php?t=546917

    Sinon en Struts2 tu gardes tes variables déclarées dans ton action, tu n'est plus obligé de passer par des variables de session (moi j'utilise SPRING et je déclare me Actions Struts avec le scope="session")

  3. #3
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Salut dzafer,

    Merci pour ton lien mais ce n'est pas du tout ce que je souhaitais faire.

    PAR CONTRE, pour ce que tu me dis juste en dessous, ca m'interesse, car c'est justement ca que j'essaye de faire : mettre mon action (qui est en faite mon bean) en session pour garder les variables de mon action.

    NB: J'utilise aussi Spring, ou par exemple j'injecte mes Services dans mes actions. Mais je n'arrive pas, ou plutôt je ne sais pas comment déclaré mes beans en session.
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  4. #4
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 114
    Points
    114
    Par défaut
    Avec Spring 2.0x

    Il suffit de rajouter tes Actions également dans ton applicationContext.xml et de
    mettre le scope

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <!-- Struts2 actions  -->
    	<bean id="monAction" class="com.test.MonAction" scope="session">
    <property name="monService"><ref local="monService"/></property>
    </bean>

  5. #5
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Aye, c'est pourtant ce que j'ai fait. Mais rien n'est gardé en session....
    (ma version de spring-core 2.5.4).
    De plus, le service que j'injecte au niveau de mon bean est resetter à chaque fois que je fais un submit, plutot bizarre si Spring le considéré comme un bean session, non?

    Mon code qui est le meme que le tien si ce n'est les noms..:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <bean name="histo" class="com.XXX.action.HistoAction" scope="session">
    		<property name="myService">
    			<ref local="service" />
    		</property>
    	</bean>
    Ton fichier applicationContext.xml commence bien par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="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-2.0.xsd">
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  6. #6
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 114
    Points
    114
    Par défaut
    Voici ma config, en espérant que tu puisses y trouver ton problème
    Malheureusement je ne sais pas si la syntaxe est la même en 2.5

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
    	"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
     
    <beans>
     
    	<!-- JNDI DataSource -->
    	<bean id="dataSource"
    		class="org.springframework.jndi.JndiObjectFactoryBean">
    		<property name="jndiName"
    			value="java:comp/env/jdbc/testdb">
    		</property>
    	</bean>
     
     
    	<!-- Hibernate SessionFactory -->
    	<bean id="sessionFactory"
    		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    		<property name="dataSource">
    			<ref local="dataSource" />
    		</property>
    		<property name="mappingResources">
    			<list>
    				<value>com/test/model/Country.hbm.xml</value>
    			</list>
    		</property>
    		<property name="hibernateProperties">
    			<props>
    			    <prop key="hibernate.show_sql">true</prop>
    				<prop key="hibernate.dialect">
    					org.hibernate.dialect.MySQLDialect
    				</prop>
    			</props>
    		</property>
    	</bean>
     
    	<!-- Transaction manager for the Hibernate SessionFactory. -->
    	<bean id="transactionManager"
    		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    		<property name="sessionFactory">
    			<ref local="sessionFactory" />
    		</property>
    	</bean>
     
       <bean id="transactionInterceptor"
    		class="org.springframework.transaction.interceptor.TransactionInterceptor">
    		<property name="transactionManager">
    			<ref bean="transactionManager" />
    		</property>
    		<property name="transactionAttributes">
    			<props>
    				<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
    				<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
    				<prop key="save*">PROPAGATION_REQUIRED</prop>
    				<prop key="update*">PROPAGATION_REQUIRED</prop>
    				<prop key="delete*">PROPAGATION_REQUIRES_NEW</prop>
    				<prop key="*">PROPAGATION_REQUIRED</prop>
    			</props>
    		</property>
    	</bean>
     
        <!-- DAO -->
     
    	<bean id="countryDAO" class="com.test.dao.hibernate.CountryDAOHibernate"> 
    		<property name="sessionFactory"><ref local="sessionFactory"/></property> 
    	</bean>
     
    ...	
        <!-- Services -->
    	<bean id="countryService" class="com.test.business.impl.CountryServiceImpl">
    		<property name="countryDAO"><ref local="countryDAO"/></property>
    	</bean>
     
    ...
     
         <!-- Struts2 actions  -->
    	<bean id="patientAction" class="com.test.action.PatientAction" scope="session">
    	  <property name="countryService"><ref local="countryService"/></property>
        </bean>
     
    ...
     
    </beans>

  7. #7
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Merci pour ta coopération mais même en recopiant ta conf et en changeant mes noms d'action ca ne passe pas.

    Cela viendrait-il d'une configuration différente dans struts2... Pourrais-tu me dire si tu a mis quelque chose de spécial dans ton struts.properties?
    As-tu mis des constantes dans ton struts.xml?

    Tu hérites de struts-default?

    Merci,
    Maxime
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  8. #8
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 114
    Points
    114
    Par défaut
    C'est étonnant, tu n'as même pas d'erreur au démarrage ?

    Bon bien il reste le 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
    <?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"
    	id="WebApp_ID" version="2.5">
    	<display-name>TEST</display-name>
    	<filter>
    		<filter-name>struts2</filter-name>
    		<filter-class>
    			org.apache.struts2.dispatcher.FilterDispatcher
    		</filter-class>
    	</filter>
    
    	<filter-mapping>
    		<filter-name>struts2</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
    
    	<welcome-file-list>
    		<welcome-file>index.jsp</welcome-file>
    	</welcome-file-list>
    
    	<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>
    
    	<session-config>
    		<session-timeout>20</session-timeout>
    	</session-config>
    
    	<welcome-file-list>
    		<welcome-file>index.jsp</welcome-file>
    	</welcome-file-list>
    
    	<resource-ref>
    		<description>Tutorial DataSource</description>
    		<res-ref-name>jdbc/testdb</res-ref-name>
    		<res-type>javax.sql.DataSource</res-type>
    		<res-auth>Container</res-auth>
    	</resource-ref>
    
    
    </web-app>
    Il y a juste une ligne pour les tiles, car j'utilise Tiles2 ...
    Regarde si tu as bien les deux listener spring ?!



    Autre piste, regarde si les noms correspondent:
    dans applicationContext
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <!-- Struts2 actions  -->
    	<bean id="monAction" class="com.test.MonAction" scope="session">
    <property name="monService"><ref local="monService"/></property>
    </bean>
    avec celui dans struts.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <package name="test" extends="struts-default" namespace="/test">
    		
    		<action name="searchEmployee" method="searchEmployee" class="monAction">
           
           </action>
    </package>

  9. #9
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut


    je commence à plus rien comprendre.
    J'ai mis les 2 lignes spring (j'en avais qu'une seulement le ContextLoaderListener
    )

    J'ai testé ca n'a rien changé.

    J'ai modifié mon autowire que j'avais en AUTO par NAME. Et la problème il n'arrive plus à m'injecter mes propriétés.... (peut-etre que le problème vient de la).

    Tu es sur de toi avec le name? C'est pas plutot ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <!-- Struts2 actions  -->
    	<bean id="monAction" class="com.test.MonAction" scope="session">
    <property name="monService"><ref local="monService"/></property>
    </bean>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <package name="test" extends="struts-default" namespace="/test">
    		
    		<action name="monAction" method="searchEmployee" class="com.test.MonAction">
           
           </action>
    </package>
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  10. #10
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut

    J'ai retrouvé le sourire grâce à toi.
    En effet dans le post précédent je te demandais si tu étais sur de ton coup avec le nom pointant sur la classe, et en effet en testant ce que tu m'as dit ça marché parfaitement.

    Je pensais que ça référencait le nom de l'action et non la classe...
    Je trouve d'ailleurs plutôt ça bizarre comme façon de procéder. Mais peu importe tout marche impeccablement maintenant!!!

    UN GRAND MERCI POUR TON AIDE
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

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

Discussions similaires

  1. probleme avec scope session struts2
    Par franco9 dans le forum Struts 1
    Réponses: 0
    Dernier message: 18/07/2012, 02h02
  2. Réponses: 6
    Dernier message: 28/11/2005, 12h03
  3. Déclencher une action avec un chrono
    Par Oberown dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/09/2005, 14h22
  4. [JTextField] Déclencher une action avec la touche ENTER
    Par tchoukapi dans le forum Composants
    Réponses: 10
    Dernier message: 19/09/2005, 14h37
  5. Réponses: 4
    Dernier message: 27/04/2004, 14h45

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