it-swarm-pt.tech

Como adicionar um parâmetro ao HttpServletRequest existente do meu Java Servlet?

Quero adicionar um novo parâmetro ao mapa de parâmetros do meu HttpServletRequest.

O código a seguir

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

cria este erro

no modifications are allowed to a locked parameter map

Qual é a maneira correta de fazer isso?

20
M Sach

Os parâmetros de uma solicitação são os valores enviados como parâmetros pelo navegador. Não há razão para alterá-los. Se você deseja associar algum valor à solicitação, use um atributo em vez de um parâmetro. Isso tem a vantagem adicional de que um atributo pode ser qualquer objeto e não apenas uma String:

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

Você pode adicionar parâmetros se encaminhar a solicitação para outro recurso (embora eu não diria que é uma boa prática):

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

Os parâmetros devem ser codificados corretamente, no entanto.

15
JB Nizet

Corri para um problema semelhante e contornei-o fazendo uma cópia do mapa de parâmetros.

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