Я пытаюсь сохранить несколько записей в базе данных, но не могу сохранить. Я могу сохранить только 1 строку за раз. Я следовал этому примеру ссылки ниже. но все еще получаю ошибку:
Spring mvc добавляет несколько строк
Controller.java
Это мой класс контроллера:
@PostMapping("/saveCREfforts")
public String saveCREfforts(@ModelAttribute("creffortdetailsForm") CREffortDetailsListForm cREffortDetailsListForm,, Model model, BindingResult bindingResult) {
for(CREffortDetails crEfforts : cREffortDetailsListForm.getcREffortDetails()) {
System.out.println(" crEffortr.getCrNumber :::: : "+crEfforts.getCrNumber());
cREffortsDetailsService.save(crEfforts);
}
return "AddCREfforts";
}
JSP
Это страница JSP.
Я использовал <form:form>
теги для Spring Boot.
<form:select name="task" style="width:100%;" path="CREffortDetails[0].task" value="task">
<form:option value="Documentation Creation / Updation" >Documentation Creation / Updation</form:option>
<form:option value="Design and development">Design and development</form:option>
<form:option value="Build">Build</form:option>
<form:option value="Deployment to lower environments (AM2/AM3/QA/TSTB)">Deployment to lower environments (AM2/AM3/QA/TSTB)</form:option>
<form:option value="Unit Testing">Unit Testing</form:option>
<form:option value="System Testing">System Testing</form:option>
<form:option value="Unit Testing">Unit Testing</form:option>
<form:option value="Review Efforts">Review Efforts</form:option>
<form:option value="UAT Testing Support">UAT Testing Support</form:option>
<form:option value="Deployment to Production">Deployment to Production</form:option>
</form:select>
</td>
<td>
<form:select name="weekNumber" style="width:100%;" path="CREffortDetails[0].weekNumber" value="weekNumber">
<form:option value="WK39">WK39</form:option>
<form:option value="WK40">WK40</form:option>
<form:option value="WK41">WK41</form:option>
<form:option value="WK42">WK42</form:option>
<form:option value="WK43">WK43</form:option>
<form:option value="WK44">WK44</form:option>
</form:select>
</td>
<td>
<form:input path="CREffortDetails[0].plannedHours" value="" style="width:100%;" />
</td>
<td>
<form:input path="CREffortDetails[0].actualHours" value="" style="width:100%;" />
</td>
<form:input type="hidden" path="CREffortDetails[0].crNumber" style="width:100%;" />
</tr>
<tr>
<td>
<form:select name="task" style="width:100%;" path="CREffortDetails[1].task" value="task">
<form:option value="Documentation Creation / Updation" >Documentation Creation / Updation</form:option>
<form:option value="Design and development">Design and development</form:option>
<form:option value="Build">Build</form:option>
<form:option value="Deployment to lower environments (AM2/AM3/QA/TSTB)">Deployment to lower environments (AM2/AM3/QA/TSTB)</form:option>
<form:option value="Unit Testing">Unit Testing</form:option>
<form:option value="System Testing">System Testing</form:option>
<form:option value="Unit Testing">Unit Testing</form:option>
<form:option value="Review Efforts">Review Efforts</form:option>
<form:option value="UAT Testing Support">UAT Testing Support</form:option>
<form:option value="Deployment to Production">Deployment to Production</form:option>
</form:select>
</td>
<td>
<form:select name="weekNumber" style="width:100%;" path="CREffortDetails[1].weekNumber" value="weekNumber">
<form:option value="WK39">WK39</form:option>
<form:option value="WK40">WK40</form:option>
<form:option value="WK41">WK41</form:option>
<form:option value="WK42">WK42</form:option>
<form:option value="WK43">WK43</form:option>
<form:option value="WK44">WK44</form:option>
</form:select>
</td>
<td>
<form:input path="CREffortDetails[1].plannedHours" value="" style="width:100%;" />
</td>
<td>
<form:input path="CREffortDetails[1].actualHours" value="" style="width:100%;" />
</td>
<form:input type="hidden" path="CREffortDetails[1].crNumber" style="width:100%;" />
</tr>
</table>
<div align="center">
<table align="right">
<tr>
<!-- <input type="submit" value="SAVE" /> -->
<button class="button"><span>SAVE</button>       
<button class="button"><span>CLEAR</button>
</tr>
</table>
<br><br>
</form:form>
Класс бина
Это класс сущности. Мы пытаемся сохранить данные формы в базе данных с помощью JPA.
@Entity
@Table(name = "CREFFORTFORM")
public class CREffortDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String crNumber;
private String description;
private String task;
private String weekNumber;
private String plannedHours;
private String actualHours;
private String totalPlannedHours;
private String totalActualHours;
@ManyToMany(mappedBy = "creffortdetails")
private Set<CRDataForm> crdataform;
public Set<CRDataForm> getCrdataform() {
return crdataform;
}
public void setCrdataform(Set<CRDataForm> crdataform) {
this.crdataform = crdataform;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getCrNumber() {
return crNumber;
}
Форма класса бина со списком:
Это форма списка для итерации нескольких строкзаписей.
public class CREffortDetailsListForm {
private List<CREffortDetails> cREffortDetails;
public List<CREffortDetails> getcREffortDetails() {
return cREffortDetails;
}
public void setcREffortDetails(List<CREffortDetails> cREffortDetails) {
this.cREffortDetails = cREffortDetails;
}
}`
Я получаю сообщение об ошибке ниже JSP при загрузке страницы.
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Fri Oct 18 17:46:57 IST 2019
There was an unexpected error (type=Internal Server Error, status=500).
Invalid property 'CREffortDetails[0]' of bean class [com.demandTracker.auth.model.CREffortDetails]: Bean property 'CREffortDetails[0]' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
org.springframework.beans.NotReadablePropertyException: Invalid property 'CREffortDetails[0]' of bean class [com.demandTracker.auth.model.CREffortDetails]: Bean property 'CREffortDetails[0]' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
at