如何访问 thymeleaf 模型属性(专门来自对象的列表)以填充 html 下拉列表?

Posted

技术标签:

【中文标题】如何访问 thymeleaf 模型属性(专门来自对象的列表)以填充 html 下拉列表?【英文标题】:How to access thymeleaf model attribute (A list from an object specifically) to populate an html dropdown list? 【发布时间】:2020-07-31 03:08:18 【问题描述】:

我一直在做一些研究,如果您通过 model.addAttribute("object name", object); 传递整个内容,我了解如何使用特定对象。但是如果我只传递一个返回列表的方法,我不知道如何获取 html 中的数据。

所以,这将是我的班级控制器:

@Controller
public class randomNotification 

    @Autowired
    private randomService randomService;

    @Autowired
    private secondService secondService;

    @GetMapping("/random-notification.html")
    public String renderpage(Model model) 
        model.addAttribute("orgs", randomService.getOrgs());
        model.addAttribute("templates", secondService.getTemplates());
        return "random-notification";
    

randomService.getOrgs() 会返回一个字符串集合,例如 ["AB","BC","CD","DE","EF","FG"] secondService.getTemplates() 也会返回一个类似的字符串集合。

我想要做的是使用字符串列表中的每个值来填充我的 html 中的下拉列表。因此,如果我有以下空白组合框:

<div class="random-combobox">
    <th><label>Random </label></th>
    <th>
        <select class="random-cbox">
            <option value="">Select one..</option>
            <option value=""></option>
            <option value=""></option>
            <option value=""></option>
            <option value=""></option>
            <option value=""></option>
            <option value=""></option>
        </select>
    </th>
</div>

我想用列表中的一项填充每个选项,所以它几乎就像

<div class="random-combobox">
    <th><label>Random </label></th>
    <th>
        <select class="random-cbox">
            <option value="">Select one..</option>
            <option value="<getOrgsOption1>">AB</option>
            <option value="<getOrgsOption2>">BC</option>
            <option value="<getOrgsOption3>">CD</option>
            <option value="<getOrgsOption4>">DE</option>
            <option value="<getOrgsOption5>">EF</option>
            <option value="<getOrgsOption6>">FG</option>
        </select>
    </th>
</div>

【问题讨论】:

请阅读文档:thymeleaf.org/doc/tutorials/3.0/… @SimonMartinelli 我通读了那个,但我不确定如何用我的信息来实现它。 6.5 文档中的“示例”不是很清楚,或者我可能只是不了解如何使用它。 【参考方案1】:

这样就可以了

<select>
  <option th:each="org : $orgs" 
          th:value="$org" 
          th:text="$org"></option>
</select>

【讨论】:

这非常有效。感谢您展示示例代码来演示文档。非常有帮助。

以上是关于如何访问 thymeleaf 模型属性(专门来自对象的列表)以填充 html 下拉列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Thymeleaf + spring boot 控制器中显示来自 Flux 的数据

如何在 Jquery 中访问模型属性(列表)

Thymeleaf (th:each + th:selected) :从每个循环访问选定属性中的变量

从 Thymeleaf 中的模型对象设置 CSS 变量

如何访问我的对象 Thymeleaf 的属性(Spring Boot)

无法从 Thymeleaf 中的模型对象设置默认 CSS 变量