У меня есть объект:
InvoiceData
String name
Date date
List<InvoiceTask>
В InvoiceTask есть 3 поля:
InvoiceTask
String name
String project
BigDecimal hours
Я создал формуляр тимиана, который создает объект InvoiceData и сохраняет его в моем экземпляре MongoDB, но он содержит только Name
и Date
. Я понятия не имею, как изменить эту форму, чтобы добавить не только задачу, но и несколько задач (возможно, с помощью кнопки «Добавить задачу» внутри формы).
Контроллер, перенаправляющий на add.html
, выглядит следующим образом:
@RequestMapping(value = "/add/{id}")
public String addPage(@PathVariable("id") String id, Model model) {
InvoiceData invoiceData = new InvoiceData();
model.addAttribute("contractorid", id);
model.addAttribute("invoicedata", invoiceData);
return "add";
}
Контроллер, сохраняющий InvoiceData, выглядит следующим образом:
@RequestMapping(value = "/addinvoice/{id}", method = RequestMethod.POST, produces = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String addInvoice(@PathVariable("id") String id, InvoiceData data, Model model) {
Contractor contractor = contractorRepository.findById(id).get();
data.setData(contractor.getContractorData());
if (contractor.getInvoices() == null) {
contractor.setInvoices(new ArrayList<InvoiceData>());
}
contractor.getInvoices().add(data);
invoiceDataRepository.save(data);
contractorRepository.save(contractor);
model.addAttribute("contractor", contractor);
return "index";
и шаблон Thymeleaf для InvoiceData выглядит следующим образом ( у него еще нет списка InvoiceTask! ):
<form action="#" th:action="@{addinvoice/{id}(id=${contractorid})}" th:object="${invoicedata}" method="post">
<ul class="form-style-1">
<li>
<label>Name<span class="required">*</span></label>
<input type="text" th:field="*{name}" id="receptionDate">
</li>
<li>
<label>Date<span class="required">*</span></label>
<input type="date" th:field="*{orderDate}" id="orderDate">
</li>
<li>
<input type="submit" value="Submit" />
</li>
</ul>
</form>
Я буду честен, я не знаю, с чего начать ...