Bonjour à tous
J'ai un petit souci avec une de mes actions, mais je pense que le problème est plus général.
J'ai un bean d'un côté du type :
De l'autre, j'ai une jsp qui n'inclue le champs eventId que sous certaine condition :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public class CreatePost extends ActionSupport implements CookiesAware, Preparable { private String name; private long eventId; }
(Je n'utilise pas la balise <s:form>, j'ai créé un composant qui permet de poster des formulaires en Ajax.)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> Nom : <input type="text" name="name" /> <s:if test="%{channel.events.size > 0}"> Evènement : <select name="eventId"> <option value="-1" selected>Aucun</option> <s:iterator value="channel.events"> <option value="<s:property value='idEvent'/>"><s:property value='name'/></option> </s:iterator> </select> </s:if>
Voici donc le problème : si je fais un premier appel à cette fonction en spécifiant un eventId, celui-ci est bien enregistré, tout fonctionne bien.
En revanche, si lors d'un 2è appel du formulaire, la condition %{channel.events.size > 0} n'est pas vérifiée, le champs n'est pas passé à l'action. Pendant le débogage, j'ai pu constater que la méthode de mon bean setEventId(..) n'était pas appelée, mais que la valeur de l'attribut eventId était resté en mémoire.
Ce que j'aimerais, c'est que les attributs de mon action soient réinitialisés à chaque appel.
Comment puis-je faire? Je pense que ceci est inhérent à une compréhension plus générale des scopes, et le problème que je rencontre ici peut se retrouver ailleurs dans le code.
Merci pour votre aide !
Partager