サーブレットから jsp にマップを渡すアプリケーションがあります。jsp では、マップを表示し、マップの値を削除または編集するオプションを提供します。ただし、値を変更した後、マップを受信する別のサーブレットにマップを送信する方法。
次のようにマップをjspに渡すサーブレット「servletA」があるとします。
public int Id=11111;
Map<String,String> configParamsMap=new HashMap<String,String>(size);
configParamsMap.put("1", "arg1");
configParamsMap.put("2", "arg2");
configParamsMap.put("3", "arg3");
configParamsMap.put("4", "arg4");
//
System.out.println("parameters passing to the jsp:: appId"+appId+"::configId"+configId);
request.setAttribute("configParamsMap", configParamsMap);
request.setAttribute("Id", Id);
RequestDispatcher rd = request.getRequestDispatcher("/JSP/display.jsp");
rd.forward(request, response);
jsp では、値を削除または編集できます。私は次のように削除を行っており、パラメーターを渡しています
<c:forEach var="configParams" items="${configParamsMap}">
<!-- KEY: ${configParams.key} - VALUE: ${configParams.value} -->
<tr>
<td>
<c:out value="${configParams.key}" />
</td>
<td><input type="text" name="" value="${configParams.value}" /></td>
</tr>
</c:forEach>
</table>
<form action="sevletB?action=Delete" method="post"><input
type="submit" value="Delete"></input>
<input type="hidden" name="Id" value="${Id}"></input>
</form>
私の問題は、パラメーター "id" に対して行ったように、マップを別のサーブレット "servletB" に戻す方法です。このマップは、ユーザーがいくつかの値 (つまり、jsp 内のマップの現在のステータス) を編集したマップである必要があります。