首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从集合中选择实体的形式?Spring和Thymeleaf

如何从集合中选择实体的形式?Spring和Thymeleaf
EN

Stack Overflow用户
提问于 2015-01-14 22:33:49
回答 1查看 2.6K关注 0票数 4

CompanySet中有一些User实体,所有用户都存储在DB中。我想选择一些使用multiple-select形式的用户。使用Thymeleaf和Spring (MVC、Boot)。

我完全迷上了该用的东西。我已经尝试过@InitBinder,Spring转换器,但是什么都没成功。问题:@Controller在bindingResult.hasErrors():上失败

@Controller

代码语言:javascript
复制
@RequestMapping(value = { "/add" }, method = { RequestMethod.POST })
public String saveNew(@Validated @ModelAttribute("company") Company company, BindingResult bindingResult, Model model) {
    if (bindingResult.hasErrors())

公司

代码语言:javascript
复制
public class Company {
    private Set<User> users = new HashSet<User>();

Thymeleaf 表单

代码语言:javascript
复制
<form th:object="${company}">
<select th:field="*{users}" multiple="multiple">
    <option th:each="user : ${allUsers}" th:value="${user.id}" th:text="${user.email}"></option>
</select>

如何实现这个多重选择的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-31 14:21:29

您可以使用以下代码

代码语言:javascript
复制
<form th:object="${company}">
<select th:field="*{users}" multiple="multiple">
    <option th:each="user : ${allUsers}" th:value="${{user}}" th:text="${user.email}"></option>
</select>

(在th:value中查看双{{}} )。

现在您需要这样的格式化程序:

代码语言:javascript
复制
@Component
public class UserFormatter implements Formatter<User> {

@Autowired
private UserService userService;

@Override
public Dia parse(String text, Locale locale) throws ParseException {
    return userService.findById(Long.valueOf(text));
}

@Override
public String print(User object, Locale locale) {
    return String.valueOf(object.getId());
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27953700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档