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

Spring Java Discussion :

affecter une valeur dans un intercepteur [Framework]


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Par défaut affecter une valeur dans un intercepteur
    salut

    j'utilise un intercepteur spring

    Partie 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
    UserFacade user = (UserFacade) context.getBean("interceptedService");
    config 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
     
    <bean id="securityInterceptor" class="test.logic.UserValidationImpl">
        <property name="userImpl" ref="odUserDao"/>
    </bean>
     
    <bean id="interceptedService" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="target">
            <ref bean="odUserDao"/>
        </property>
        <property name="interceptorNames">
            <list>
                <value>securityInterceptor</value>
            </list>
        </property>
    </bean>
    dans UserValidationImpl, j'ai une variable nommé currentUser
    dans le code de la partie 1, comment affecter une valeur à cette variable?
    dois-je en plus ajouter quelques chose dans le fichier xml?

    merci

  2. #2
    Membre chevronné
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2007
    Messages : 301
    Par défaut
    Hum... Ce que tu veux faire semble très tordu.

    Tu peux faire :
    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((UserValidationImpl) context.getBean("securityInterceptor")).setCurrentUser(value);
    2) Tu peux caster ton objet en Advised puis getAdvisors() pour récupérer son Advice. Ce qui est particulièrement abominable.

    A noter qu'avec Spring, on peut programmer des aspects qui sont transparents pour la classe manipulé (voir le chapitre 6. de la documentation). Soit via des annotations avec @AspectJ soit via XML.

    Dans ton cas, je ne sais pas ce que tu veux faire exactement ça semble bizarre de vouloir lui donner currentUser. De plus si tu travailles sur un serveur d'application ça ne pourra pas marcher.

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Par défaut
    avant d'exécuter certaine méthode, je souhaite voir si l'usager courant a le droit de le faire...

    donc dans l'intercepteur je dois avoir les info de l'usager courant pour le faire

    s'il y a une meilleur façon de faire ça...

  4. #4
    Membre chevronné
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2007
    Messages : 301
    Par défaut
    Ça dépends de ton application.

    Si tu travailles sur des Servlet par exemple. Rien n'interdit de céer un aspect qui accède à la request* et qui récupére la session où il y aura sûrement des informations sur l'utilisateur.

    *Tu peux récupérer les paramètres de la méthode sur laquelle l'aspect travaille.

    La stratégie que tu veux employer me semble bizarre dans le cadre d'une application multi-utilisateurs. Il pourrait y avoir un problème si plusieurs utilisateurs effectuaient simultanément appel à cet aspect. D'où l'utilité de la notion de session.

    Bonne chance.

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Par défaut
    pour la vue, ça sera gwt qui va être utilisé...
    struts sera utilisé pour les actions et spring pour le reste

  6. #6
    Membre chevronné
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2007
    Messages : 301
    Par défaut
    Si tu utilises GWT alors avec un aspect tu peux caster la classe sur laquelle s'applique l'aspect vers RemoteServiceServlet et récupérer ainsi la session.

    Si tu as intégrer GWT et Spring via GWT-SL, tu peux récupérer la session avec ServletUtils.getRequest().getSession(). (Si c'est le cas autant utiliser Spring MVC plutôt que Struts)

    Donc tu pourras effectuer tes vérifications sans passer de paramètre à l'aspect.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 17/12/2009, 16h01
  2. Affecter une valeur dans une variable
    Par Fabien50 dans le forum C++Builder
    Réponses: 12
    Dernier message: 18/05/2009, 09h28
  3. affecter une valeur dans une EL
    Par cybermat3 dans le forum JSF
    Réponses: 9
    Dernier message: 10/03/2009, 14h31
  4. Réponses: 6
    Dernier message: 18/11/2008, 18h31
  5. Affecter une valeur dans un champ
    Par cicubea dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/08/2007, 22h28

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