私はマップオブジェクトを持っています。このマップオブジェクトにはいくつかの値があり、これらの値をjspページに入力していますが、jspページを別のコントローラーに投稿するときに、同じ値をマップオブジェクトに存在させたいという問題があります。
Map(いくつかの値)--->controller--->jsp(Map+いくつかの追加の値)----post----->別のコントローラー[want Map+additional values]
メールコンテンツ.java
public class MailContent {
private String from;
private String to;
private String[] toMany;
private Map<String,byte[]> attachements;
//getter setter
}
some.jsp
<f:form action="../hr/sendNotification" commandName="mailHolder">
<table>
<tr>
<td><label>From:</label></td>
<td><input class="inputq" type="text" name="from" /></td>
</tr>
<tr>
<td><label>To:</label></td>
<td><input type="text" class="inputq" name="to" id="to"></input></td>
</tr>
<tr>
<td><label>Subject:</label></td>
<td><input class="inputq" type="text" name="subject" /></td>
</tr>
<c:forEach var="attach" items="${mailHolder.attachements }" varStatus="i">
<tr>
<td><label>Attachement:${i.index+1 }</label></td>
<td><input class="inputq" type="text" value="${attach.value }" name="attachements[${i.index }].value"/>
<input class="inputq" type="text" value="${attach.key }" name="attachements[${i.index }].key"/>
</tr>
</c:forEach>
<tr>
<td><label>Message:</label></td>
<td><textarea class="tarea" cols="60" rows="10" name="message"></textarea></td>
</tr>
<tr>
<td></td>
<td><input class="fancy" type="submit" value="Send" />
<input class="fancy" type="reset"
value="Reset" /></td>
</tr>
</table>
</f:form>
キーと値のペアはjspに正常に表示されますが、それを別のコントローラーに投稿して値を取得すると、キー部分は値ではなくインデックスで埋められます。
コンソール上:
前:
MailContent [from=null, to=null, attachements={abc=[B@1d37913, xyz=[B@b20ff5}, subject=null, message=null]
その後の投稿:
MailContent [from=from, to=to@gmail.com, attachements={0=[B@ebe064, 1=[B@1d90655}, subject=subject, message=message]