Dwa obiekty w formularzu html Thymeleaf

0

Próbuję wysłać dwa obiekty formularzem POST z wykorzystaniem Thymeleafa. Na chwilę obecną mój kod wygląda tak(u mnie działa ;) ):

<form th:action="@{/save}" method="post">
		<p>Nazwa produktu: <input type="text"th:field="${formProduct.name}"/></p>
		<p>Opis produktu: <textarea cols="60" rows="5" th:field="${formProduct.description}"></textarea></p>
		<p>Ilość magazynowa: <input type="number"step="1"min="0"th:field="${formProduct.quantity}"/></p>
		<p>Cena: <input type="number"step="0.01"min="0"th:field="${formProduct.price}"/> zł</p>
		<p>Indeks produktu: <input type="text"th:field="${formProduct.index}"/></p>
		<div th:object="${producer}">Wybierz producenta:
		<select th:field="${producer.id}">
			<option value="">-------------</option>
			<option th:each="producer:${producers}" th:value="${producer.id}" th:text="${producer.name}"></option>			
		</select>
		</div>
		<p><input type="submit"value="Dodaj product"/></p>
	</form>

Controller do tego:

@PostMapping("/save")
	public String addProduct(@ModelAttribute Product formProduct, @ModelAttribute Producer producer, Model model) {
		if(checkNotEmpty(formProduct)) {
		model.addAttribute("formProduct", formProduct);
		model.addAttribute("producer", producer);
		formProduct.setId(null);
		productService.addProduct(formProduct, producer.getId());
		}
		return "redirect:/admin";
	}

Problem polega na tym, że do pól obiektu producer, które mają taką samą nazwę jak pola obiektu formProduct Thymeleaf przypisuje mi wartości z obiektu formProduct(description) i odwrotnie(formProduct ma przypisywane id z obiektu producer).
Jak widać obszedłem ten problem w mało elegancki sposób. Jak to zrobić, żeby to miało ręce i nogi?

0

Wysyłaj jeden obiekt POSTem który jest wolny od problemu zduplikowanych nazw.

2

Dlaczego nie możesz przesyłać jednego obiektu reprezentującego cały formularz tylko kilka?

1 użytkowników online, w tym zalogowanych: 0, gości: 1