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?
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.
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());