Как добавить параметр в существующий запрос HttpServletRequest моего Java-сервлета? - PullRequest
20 голосов
/ 18 декабря 2011

Я хочу добавить новый параметр в карту параметров моего HttpServletRequest.

Следующий код

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

создает эту ошибку

no modifications are allowed to a locked parameter map

Как правильно это сделать?

Ответы [ 2 ]

15 голосов
/ 18 декабря 2011

Параметры запроса - это значения, отправляемые браузером в качестве параметров.Нет причин менять их.Если вы хотите связать какое-то значение с запросом, используйте атрибут, а не параметр.Это дает дополнительное преимущество, заключающееся в том, что атрибутом может быть любой объект, а не просто строка:

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

Вы можете добавить параметры, если перенаправите запрос на другой ресурс (хотя я бы не сказал, что это хорошая практика).):

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

Параметры должны быть правильно закодированы.

8 голосов
/ 24 июля 2013

Я столкнулся с подобной проблемой и обошел ее, сделав копию карты параметров.

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