@GetMapping("add")
public String addPart(Model model)
{
model.addAttribute("suppliers", this.partService.getSupplierNames());
model.addAttribute("part", new AddPartViewModel());
return "parts/parts-add";
}
这是我的班级
public class AddPartViewModel
{
private String name;
private double price;
private int quantity;
private String supplierName;
//PUBLIC GETERS AND SETTERS AND AN EMPTY CONSTRUCTOR
}
Thymeleaf语法
<div class="form-group">
<label for="supplierName">Example select</label>
<select class="form-control" id="supplierName">
<option th:each="name : ${suppliers}" th:text="${name}" th:field="*{supplierName}"></option>
</select>
</div>
这是我遇到错误的唯一地方。片段的其余部分可以正常工作,即使只是将th:field
标记自己正确的List<String> suppliers
标记移到选择框中也是如此。我没有尝试将th:字段放在<select>
标记中,即
<select class="form-control" id="supplierName" th:field="*{supplierName}">
但在分区期间我仍然遇到错误
答案 0 :(得分:1)
th:field
引用表单支持bean的字段,因此请确保您在<form>
标记中提供了正确的bean(使用th:object
属性)。
关于选择:th:field
应该在<select>
标记中提供,就像您尝试过的那样。但是,您还应在th:value
标记中提供正确的<option>
属性,以便可以将任何值分配给该字段。
包含有问题的选择的表单应如下所示:
<form th:object="${part}">
<div class="form-group">
<label for="supplierName">Example select</label>
<select class="form-control" th:field="*{supplierName}">
<option th:each="name : ${suppliers}" th:value="${name}" th:text="${name}"></option>
</select>
</div>
<!-- the rest of form's inputs and buttons -->
</form>