如何使用百日咳和弹簧填充下拉列表

时间:2016-06-09 00:56:30

标签: java html spring thymeleaf

我需要使用字符串列表中的所有值填充下拉列表。

控制器类

@RequestMapping(value = "/generateIds", method = RequestMethod.GET)
public String launchPage(Model model) {
    List<Municipality> municipalities = rCountryService.finaAllMunicipalities();
    //assume the list is populated with values
    List<String> countryName = new ArrayList<String>();
    for(int i=0; i<municipalities.size(); i++) {
        countryName.add(municipalities.get(i).getCountry().toString());
    }
    model.addAttribute("countryName ", countryName );

    return "generateIds";
}

我不知道从哪里开始HTML,所以我从这个

开始
<select th:field="*{countryName }">
    <option value="default">Select a country</option>
    <option th:each="${countryName }" th:value="${countryName }"th:text="${countryName }"/>
</select>

我的html / controller应该如何将列表中的所有元素添加为下拉选项?

提前致谢!

5 个答案:

答案 0 :(得分:16)

这就是我填充下拉列表的方式。我认为这可能有助于您了解它。

控制器

CanExecute

模型

List<Operator> operators =  operatorService.getAllOperaors()
model.addAttribute("operators", operators);

查看

  @Entity
  @Table(name = "operator")
  public class Operator {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    @JsonIgnore
    private Long id;

    @NotBlank(message="operator Name cannot be empty")
    @Column(name = "operator_name", nullable = false)
    private String operatorName;

    getters and setters ...

}   

答案 1 :(得分:8)

首先感谢您的问题和答案!我已经完成了这个解决方案。

我的模特

    List<Test> test = new ArrayList<>();
    model.addAttribute("test", test);
    List<Test> tests = testRepository.findAll();
    model.addAttribute("tests", tests);

我的观点

<div class="col-lg-3" th:object="${test}">
    <select class="form-control" id="testOrder" name="testOrder">
        <option value="">Select Test Order</option>
        <option th:each="test : ${tests}"
                th:value="${test.testCode}"
                th:text="${test.testCode}+' : '+${test.testName}"></option>
    </select>
</div>

我的HTML

UITableView

我的结果

Image - tymeleaf dropdown from model

答案 2 :(得分:0)

您仅在视图中需要此代码。

List<Test> tests = testRepository.findAll();
model.addAttribute("tests", tests);

答案 3 :(得分:0)

要为模型中返回的String列表生成下拉列表,您只需要使用这些行。您无需使用额外的getter和setter方法创建任何模型类。您的代码是正确的,您只是错过了用于将返回的值存储在th:each的countryName列表中的变量名。

<select th:field="*{countryName}">
<option value="">Select Country</option>
<option th:each="country : ${countryName}" th:value="${country}" th:text="${country}"></option>
</select>

答案 4 :(得分:0)

我已经实现了类似的操作,需要从数据库中填充下拉列表。为此,我从控制器中检索了数据,如下所示:

@GetMapping("/addexpense")
public String addExpense(Expense expense,Model model){
    model.addAttribute("categories",categoryRepo.findAll());
    return "addExpense";
}

然后在百里香中,我使用了以下代码。

<div class="form-group col-md-8">
<label  class="col-form-label">Category </label>
<select  id="category" name="category" th:field="*{category.id}" >
<option th:each="category : ${categories}" th:value="${category.id}" th:utext="${category.name}"/>
</select>
</div>