M S*_*ach 20 java servlets web-applications
我想在我的参数图中添加一个新参数HttpServletRequest.
以下代码
request().getParameterMap().put("j_username", user);
request().getParameterMap().put("j_password", pwd);
Run Code Online (Sandbox Code Playgroud)
创建此错误
no modifications are allowed to a locked parameter map
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?
JB *_*zet 15
请求的参数是浏览器作为参数发送的值.没有理由改变它们.如果要将某个值与请求关联,请使用属性而不是参数.这具有额外的优点,即属性可以是任何对象而不仅仅是字符串:
request.setAttribute("user", new User(userName, password));
Run Code Online (Sandbox Code Playgroud)
如果您将请求转发到另一个资源,您可以添加参数(虽然我不会说这是一个好习惯):
request.getRequestDispatcher("/some/path?j_username=" + user + "&j_password=" + pwd).forward(request, response);
Run Code Online (Sandbox Code Playgroud)
但是,参数应该正确编码.
我遇到了类似的问题,并通过制作参数图的副本来解决它.
Map<String, String[]> params = new HashMap<String, String[]>(req.getParameterMap());
Run Code Online (Sandbox Code Playgroud)