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:
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:
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:
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:
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:
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... :roll: