我在這裏有一個小小的爭鬥,這是我的問題:我有一個表,其內容取自一個包含2個字符串變量和一個bean列表的內容由2個字符串變量和一個MultipartFile組成。所以,在這種情況下我呈現給用戶的表是這樣的:
添加新行後提交表單後的問題
問題是當我嘗試實施了「添加圖片」的功能:在表中的新行被顯示,但提交後我在控制器中接收的bean的值將新值放入列表中的最後一個bean,即如果在「Bean 2 - field 1」的新輸入中,我在控制器中放入「new_value_5」,我會收到「值5,new_value_5「到‘列表中的最後一個bean的字段1’,我沒有收到這個bean的新實例,我只是得到所有的值到列表的最後一個Bean。 這是我在JSP頁面代碼:
<form:form action="myaction.html" method="post" modelAttribute="main_bean" enctype="multipart/form-data">
<table>
<tr>
<td>Bean 1 - field 1: <form:input path="bean1_field1"/></td>
</tr>
<tr>
<td>Bean 1 - field 2: <form:input path="bean1_field2"/></td>
</tr>
<tr>
<td>Images:
<table id="imgTable">
<tbody>
<c:forEach var="bean_2" items="${main_bean.list_of_bean_2}" varStatus="imgStatus">
<tr>
<td>
<img src="image/${main_bean.id}/${bean_2.pathImage}" class="imagen" width="100px;" height="100px;" id="idImage">
<div id="divFile" style="display:none;"><!-- When the user wants to add a new image I enable this input-->
<form:input type="file" path="${bean_2.image}" name="imagen" id="imgFile"/>
</div>
</td>
<td>
Bean 2 - field 1: <form:input path="list_of_bean_2[${imgStatus.index}].field1" id="field1Id"/>
<form:input type="hidden" path="list_of_bean_2[${imgStatus.index}].id"/>
</td>
<td>
Bean 2 - field 2: <form:input path="list_of_bean_2[${imgStatus.index}].field2" id="field2Id"/>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</td>
<td>
<input type="button" value="Add image" id="addImgBtn" class="addImgBtn">
</td>
</tr>
<tr>
<td><input type="submit" value="Confirm changes" > </td>
<td><input type="button" value="Cancel changes" > </td>
</tr>
</table>
</form:form>
而且豆類的結構:
public class Bean1 {
private List<Bean2> imagesCampaign;
private String field1;
private String field2;
//getters and setters
}
public class Bean2 {
private MultipartFile image;
private String field1;
private String field2;
//getters and setters
}
,因爲我認爲這是沒有必要的我沒有指定的代碼在控制器,但如果你想讓它讓我知道。
我會很感激,如果有人可以給我一個什麼這裏發生了線索。提前致謝。
編輯:我試過訪問n + 1索引(list_of_bean_2[${imgStatus.index + 1}]
),但得到了ConcurrentModificationException
有人請在這裏一點幫助?