У меня есть форма для создания нового продукта.Эта форма имеет одно раскрывающееся меню с возможными размерами (настройка в контроллере) и другое раскрывающееся меню с возможными брендами.Я получаю бренды из базы данных (у меня есть еще одна независимая форма для создания брендов).Моя проблема в том, что я не могу создать продукт, потому что в моих выпадающих меню есть какая-то ошибка, которую я не могу найти.
Контроллер:
@RequestMapping(value = "/form", method = RequestMethod.GET)
public ModelAndView form(ModelMap map1, ModelMap map2) {
String[] sizes = new String[] {"S", "M", "L", "XL"};
List<String> size = Arrays.asList(sizes);
map1.addAttribute("size", size);
List<Brand> list = myService.listBrands();
map2.addAttribute("brands", list);
return new ModelAndView("formcreate", "product", new Product());
}
@RequestMapping(value = "/submit", method = RequestMethod.POST)
public String saveProduct(@Valid @ModelAttribute("product") Product prod,
BindingResult result) throws InstantiationException {
if(result.hasErrors()) {
System.out.println("Validation error");
return "formcreate";
}else {
System.out.println("OK");
System.out.println("id brand = " + prod.getBrand().getId());
System.out.println("name brand = " + prod.getBrand().getName());
productService.insertProduct(prod);
return "prodsubmit";
}
}
formcreate.html:
<form th:action="@{/submit}" th:object="${product}" method="post">
<form:errors path="*" cssClass="errorblock" element="div" />
<table>
<tr>
<td><label>Name </label></td>
<td><input type="text" th:field="*{name}"/></td>
</tr>
<tr>
<div class="dropdown">
<td><label for="brand.id">Brand</label></td>
<td><select class="form-control" id="brand" name="brand">
<option th:each="brand : ${brands}"
th:value="${brand.id}"
th:text="${brand.nombre}"></option>
</select></td>
</div>
</tr>
<tr>
<td><label>Preice</label></td>
<td><input type="text" th:field="*{price}" /></td>
</tr>
<tr>
<div class="dropdown">
<td><label for="size">Size</label></td>
<td><select class="form-control" id="size" name="size">
<option th:each="size : ${size}"
th:value="${size}"
th:text="${size}"></option>
</select></td>
</div>
</tr>
<tr>
<td>
<input type="submit" value="Aceptar">
</td>
</tr>
</table>
</form>
В prodsubmit.html у меня есть код для отображения данных о продукте.
Когда я пытаюсь создать новый продукт, я получаю следующее:
id brand = null
name brand = 100
Идентификатор бренда должен быть100, а название бренда должно быть Пример