Est-il possible d'utiliser request.setAttribute
sur une page JSP, puis sur HTML Submit, on obtient le même attribut de requête dans le fichier Servlet
?
Réponses
Trop de publicités?Non. Malheureusement, l'objet Request n'est disponible que jusqu'à la fin du chargement de la page. Une fois le chargement terminé, vous perdrez toutes les valeurs qu'il contient, sauf si elles ont été stockées quelque part.
Si vous voulez faire persister des attributs à travers des requêtes, vous devez soit :
- Vous avez une entrée cachée dans votre formulaire, telle que
<input type="hidden" name="myhiddenvalue" value="<%= request.getParameter("value") %>" />
. Celle-ci sera ensuite disponible dans la servlet comme paramètre de requête. - Mettez-le dans la session (voir
request.getSession()
- dans une JSP, cela est disponible simplement commesession
)
Je recommande d'utiliser la session car elle est plus facile à gérer.
La réponse de Phil Sacre était correcte, mais la session ne devrait pas être utilisée juste pour le plaisir. Vous ne devez l'utiliser que pour les valeurs qui vraiment doivent vivre pendant toute la durée de la session, comme la connexion d'un utilisateur. Il est fréquent de voir les gens surutiliser la session et rencontrer d'autres problèmes, en particulier lorsqu'il s'agit d'une collection ou lorsque les utilisateurs reviennent sur une page qu'ils ont déjà visitée et découvrent qu'il reste des valeurs d'une visite précédente. Un programme intelligent minimise autant que possible la portée des variables, un mauvais programme utilise trop la session.
Si vous voulez que vos demandes persistent, essayez ceci :
exemple : sur votre page JSP ou servlet
request.getSession().setAttribute("SUBFAMILY", subFam);
et sur n'importe quelle page de réception, utilisez les lignes ci-dessous pour récupérer votre session et vos données :
SubFamily subFam = (SubFamily)request.getSession().getAttribute("SUBFAMILY");
Vous pouvez cependant le faire en utilisant les attributs pageContext :
Dans la JSP :
<form action="Enter.do">
<button type="SUBMIT" id="btnSubmit" name="btnSubmit">SUBMIT</button>
</form>
<% String s="opportunity";
pageContext.setAttribute("opp", s, PageContext.APPLICATION_SCOPE); %>
Dans la servlet (liée au modèle d'url "Enter.do") :
String s=(String) request.getServletContext().getAttribute("opp");
Il existe d'autres scopes que APPLICATION_SCOPE, comme SESSION_SCOPE. APPLICATION_SCOPE est utilisé pour les attributs de ServletContext.
- Réponses précédentes
- Plus de réponses