Thymeleaf将String字段绑定到选择框

时间:2017-09-23 07:26:33

标签: string select thymeleaf

@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}">

但在分区期间我仍然遇到错误

1 个答案:

答案 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>