Thymeleaf预选Select2选项

斯特林弓箭手

我正在尝试使用select2呈现具有多选列表的编辑页面。根据select2文档,只需设置一个选项即可selected="selected",但是我使用的是Java / Spring和Thymeleaf模板,因此有点棘手。

<select id="programs" name="programs.id" style="min-width: 200px;" multiple="multiple">
    <option
            th:each="programs : ${programs}"
            th:value="${programs.id}"
            th:text="'['+${programs.category.name}+'] '+${programs.name}"
            th:selected="${#lists.contains(personProg,programs.id)}">
    </option>
</select>

programs.id是程序的ID,并且personProg是与人员ID相关联的程序的列表,因此是在列表上预先选择的。

这样可以正常编译和加载,但是没有选择任何选项。没有html或任何东西,我已经看了几个注意到该#lists.contains()方法的问题我看到它不适用于th:field属性,但我也没有。

Java参考:

@RequestMapping(value="edit", method=RequestMethod.GET)
public String Edit(Model model, @RequestParam(value="userID") long id) {
    Person person = repo.findById(id);
    model.addAttribute("person", person);
    model.addAttribute("users", repo.findByOrderByLastnameAsc());
    model.addAttribute("programs", progRepo.findByOrderByIdAsc());
    model.addAttribute("personProg", personProgRepo.findByPersonid(person.getID()));
    for (PersonPrograms x : personProgRepo.findByPersonid(person.getID())) {
        System.out.println(x.getProgramid());
    }
    return "edit";
}

Java控制台中的输出:

69
1
2
3
66
6
37
59
58

我在这里做错了什么?

斯特林弓箭手

发送过来的模型属性是一个personProg列表,而不是您想要的ID的列表。列出一个列表,然后发送ID列表而不是对象列表。

List<Integer> programIdList = new ArrayList<Integer>();
for (PersonPrograms x : personProgRepo.findByPersonid(person.getID())) {
   programIdList.add(x.getProgramid());
}
model.addAttribute("personProg", programIdList.toString());

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章