web-dev-qa-db-fra.com

Comment ajouter un paramètre au HttpServletRequest existant de mon Java Servlet?

Je veux ajouter un nouveau paramètre à la carte des paramètres de mon HttpServletRequest.

Le code suivant

 request().getParameterMap().put("j_username", user);
 request().getParameterMap().put("j_password", pwd);

crée cette erreur

no modifications are allowed to a locked parameter map

Quelle est la bonne façon de procéder?

20
M Sach

Les paramètres d'une requête sont les valeurs envoyées comme paramètres par le navigateur. Il n'y a aucune raison de les changer. Si vous souhaitez associer une valeur à la demande, utilisez un attribut plutôt qu'un paramètre. Cela présente l'avantage supplémentaire qu'un attribut peut être n'importe quel objet et pas seulement une chaîne:

request.setAttribute("user", new User(userName, password));

Vous pouvez ajouter des paramètres si vous transférez la demande à une autre ressource (même si je ne dirais pas que c'est une bonne pratique):

request.getRequestDispatcher("/some/path?j_username=" + user + "&j_password=" + pwd).forward(request, response);

Les paramètres doivent cependant être encodés correctement.

15
JB Nizet

J'ai rencontré un problème similaire et je l'ai résolu en faisant une copie de la carte des paramètres.

Map<String, String[]> params = new HashMap<String, String[]>(req.getParameterMap());
8
Greg Prisament