我想在HttpServletRequest
的参数映射中添加一个新参数。
下面的代码
request().getParameterMap().put("j_username", user);
request().getParameterMap().put("j_password", pwd);
创建此错误
no modifications are allowed to a locked parameter map
执行此操作的正确方法是什么?
发布于 2011-12-18 19:20:46
请求的参数是浏览器作为参数发送的值。没有理由改变它们。如果您希望将某些值关联到请求,请使用属性而不是参数。这有一个额外的优点,即属性可以是任何对象,而不仅仅是字符串:
request.setAttribute("user", new User(userName, password));
如果您将请求转发到另一个资源,则可以添加参数(尽管我不认为这是一个好的做法):
request.getRequestDispatcher("/some/path?j_username=" + user + "&j_password=" + pwd).forward(request, response);
但是,参数应该被正确编码。
发布于 2013-07-24 04:58:20
我遇到了类似的问题,并通过复制参数映射解决了这个问题。
Map<String, String[]> params = new HashMap<String, String[]>(req.getParameterMap());
https://stackoverflow.com/questions/8551331
复制相似问题