web-dev-qa-db-ja.com

my Java Servlet?の既存のHttpServletRequestにパラメーターを追加する方法?

HttpServletRequestのパラメーターマップに新しいパラメーターを追加します。

次のコード

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

このエラーを作成します

no modifications are allowed to a locked parameter map

これを行う正しい方法は何ですか?

20
M Sach

リクエストのパラメータは、ブラウザからパラメータとして送信される値です。それらを変更する理由はありません。要求に値を関連付ける場合は、パラメーターではなく属性を使用します。これには、属性が文字列だけでなく任意のオブジェクトになる可能性があるという追加の利点があります。

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

リクエストを別のリソースに転送する場合は、パラメーターを追加できます(ただし、良い方法とは言いません)。

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

ただし、パラメータは正しくエンコードされる必要があります。

15
JB Nizet

同様の問題にぶつかり、パラメーターマップのコピーを作成して回避しました。

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