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:
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"
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>
Je pourrais créer une fonction style:
Instancier mon bean:
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()); } }
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
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>
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
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>
Donc est-ce qu'il est possible directement depuis le fichier xml de configuration du flow de manipuler messageContext?...
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>
J'espère que mon explication est claire...
Partager