У меня здесь немного борьбы, это моя проблема: у меня есть таблица, содержимое которой взято из компонента, содержащего две строковые переменные и список фасолей, которые, в свою очередь, образованный двумя строковыми переменными и MultipartFile. Таким образом, в этом случае я представить пользователю таблицу с так:
Проблемы после отправки формы с добавленной новой строкой
Проблема возникает, когда я пытаюсь реализовать функциональность «Добавить изображение»: новая строка в таблице показано, но после того, как подать значения, которые я получаю в контроллере, помещают новые значения в последний бит в списке, т. е. если в новом вводе для «Bean 2 - field 1» я помещаю «new_value_5» в контроллер, я получаю «значение 5, new_value_5 "в поле 1" из последнего компонента в списке, я не получаю новый экземпляр компонента, я просто получаю все значения в последнем компоненте списка. Это мой код на странице 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
}
Я не указан код в контроллере, потому что я думаю, не стоит, но если ты хочешь, просто дайте мне знать.
Буду очень признателен, если кто-нибудь может дать мне понять, что здесь происходит. Заранее спасибо.
EDIT: Я пытался доступ к п + 1 индекс (list_of_bean_2[${imgStatus.index + 1}]
), но получил ConcurrentModificationException
Кто-нибудь, пожалуйста, немного помочь здесь ???