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 Web Java Discussion :

MessageContext.addMessage définit directement dans le fichier flow xml [WebFlow]


Sujet :

Spring Web Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 48
    Points
    48
    Par défaut MessageContext.addMessage définit directement dans le fichier flow xml
    Bonjour,

    Dans une de mes vues, j'intercepte l'exception "OptimisticLockException" qui me permet de savoir que depuis le moment où j'ai édité l'enregistrement que je tente de sauvegarder, un autre utilisateur a modifié ce même enregistrement.

    Jusque là c'est simple j'ai donc un flow du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        <view-state id="edit_contact_details" model="CreateEditPersonModel" view="edit_contact_details">
            ...
            <transition on-exception="javax.persistence.OptimisticLockException" to="back_to_search_person_OptimisticLockException" />
            ...
        </view-state>
    Ce que je voudrais, c'est que lorsque je retourne à "back_to_search_person_OptimisticLockException", j'affiche un message à l'utilisateur du style: "Cet enregistrement a été modifié par un autre utilisateur depuis le démarrage de sa modification"

    Je pourrais créer une fonction style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class setupFormEditContactDetails extends FormAction {
     
        public Event messageError(RequestContext context) throws Exception {
            MessageContext messages = context.getMessageContext();
     
            messages.addMessage(new MessageBuilder().error().source(null).code("OptimisticLockException").build());
        }    
     
    }
    Instancier mon bean:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
           <bean id="setupFormEditContactDetails" class="monPackage.setupFormEditContactDetails">
               <property name="formObjectName">
                   <value>CreateEditPersonModel</value>
               </property>
               <property name="formObjectClass">
                   <value>entites.Personne</value>
               </property>
               <property name="formObjectScope">
                   <value>FLOW</value>
               </property>
           </bean>
    Et enfin dans le webflow, ca donnerait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        <view-state id="edit_contact_details" model="CreateEditPersonModel" view="edit_contact_details">
            ...
            <transition on-exception="javax.persistence.OptimisticLockException" to="back_to_search_person_OptimisticLockException">
                 <evaluate expression="setupFormEditContactDetails.messageError" />
            </transition>
            ...
        </view-state>
    Je me dis que créer un bean, plus une classe, ... juste pour pouvoir afficher un message d'erreur.... Et donc je cherche un moyen sans passer par toutes ces étapes... Je voudrais pouvoir directement ajouter ce message d'erreur, ce qui donnerait une formule du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        <view-state id="edit_contact_details" model="CreateEditPersonModel" view="edit_contact_details">
            <transition on-exception="javax.persistence.OptimisticLockException" to="back_to_search_person_OptimisticLockException" >
                    <evaluate expression="requestScope.messageContext.addMessage(new MessageBuilder().error().source(null).code('OptimisticLockException').build())" />
            </transition>
        </view-state>
    Donc est-ce qu'il est possible directement depuis le fichier xml de configuration du flow de manipuler messageContext?...

    J'espère que mon explication est claire...

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 48
    Points
    48
    Par défaut
    OK j'ai finalement trouvé...

    C'était tout simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            <transition on-exception="javax.persistence.OptimisticLockException" to="back_to_search_person_OptimisticLockException" >
                    <evaluate expression="messageContext.addMessage(new org.springframework.binding.message.MessageBuilder().error().source(null).code('...').build())" />
            </transition>

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/06/2010, 12h44
  2. [Source] Une classe pour imprimer directement dans un fichier
    Par Delbeke dans le forum Vos contributions VB6
    Réponses: 0
    Dernier message: 26/05/2009, 19h00
  3. Erreur d'évaluation (parse) dans le fichier web.xml de l'application
    Par popinenhbourg dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 15/05/2006, 16h38
  4. [Servlet] Erreur dans le fichier web.xml
    Par Crazyblinkgirl dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 05/07/2004, 16h20

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