Comment puis-je appeler setParameter dans une demande d'objet?
C'est probablement en raison de mon incompréhension et de l'information incomplète de JSP et la JSTL. J'ai une page web où j'ai saisie des éléments tels que
<input name="elementID" value="${param.elementID}"/>
Lorsque j'essaie d'enregistrer le formulaire, j'ai vérifier que elementID et d'autres éléments afin de se conformer à certaines contraintes "du numérique, à moins de XXX". Je montre un message d'erreur si ils ne le font pas. Tous les paramètres sont enregistrés et l'utilisateur n'a pas besoin de le saisir à nouveau après correction de l'erreur.
Après avoir enregistré, quand je suis rediriger vers la même page de l'objet à modifier, je suis à la recherche d'un moyen de définir le paramètre comme la request.setParameter("elementID",..)
Est-il un moyen de faire cela ? Toutefois, la seule chose que je peux trouver est request.setAttribute
.
- "Je suis à la recherche d'un moyen de définir le paramètre comme la demande.setParameter("elementID",..)". Pourquoi?
- Vous avez déjà trouvé la bonne méthode. Quel est le problème avec elle? Remarque, vous avez une attaque XSS trou là. Si vous n'êtes pas certain, lisez nos servlets page du wiki pour obtenir des exemples concrets: stackoverflow.com/tags/servlets/info
- Merci. Je suis allé avec la demande.setAttribute. Utilisé requestScope.attribut dans mon <input ... value="${requestScope.attribut}"/> Cependant, chaque fois que la validation échoue, je restaurer les attributs à partir des paramètres de la requête pour conserver les valeurs que l'utilisateur a fait une entrée. Une fois validé, je pousse les données de mon haricot. Est-il une meilleure approche de la conception ? Comme pour l'attaque XSS trou, lieu actuel patron essaie de me forcer à écrire dans les scriptlets et jdbc. J'ai à peine réussi à obtenir la permission d'utiliser jstl. Il y a plus de trous que cette attaque XSS trou.
Vous devez vous connecter pour publier un commentaire.
HTTP réponses ne prend pas en charge la transmission des paramètres.
JSP/Servelets vous permet d'utiliser
request.setAttribute
ousession.setAttribute
à cette fin. Les deux méthodes sont disponibles lors du traitement de la page, vous êtes à la redirection, Donc, fondamentalement, vous l'avez droit...Aussi, de ce que vous décrivez, vous voudrez peut-être vérifier la validation côté client: ne pas soumettre le formulaire jusqu'à ce que vous êtes de la validation à l'aide de script côté client (javascript)
Après la servlet processus de la forme, (ie. enregistre l'entrée de l'utilisateur dans la base de données), ont la servlet vers l'avant (pas de redirection, parce que ce serait perdre la demande params) la demande de la même jsp qui contient le formulaire. Donc, il n'est pas nécessaire de définir les paramètres depuis la servlet est juste de passer de nouveau le même objet de demande.
La jsp qui contient le formulaire doit avoir des entrées semblables à ceci:
La syntaxe ${nomvar} est EL. Donc, si le elementid a déjà une valeur, que textfield va contenir la valeur. Sinon, si vous n'avez pas utilisé de EL et/ou de la JSTL, vous utilisez les scriptlets (mais qui est fortement déconseillé, EL et/ou de JSTL devrait être la voie):
J'ai dû inclure
<%@ page isELIgnored="false"%>
à ma jsp pour permettre au code comme${elementid}
de travail