3

Company中有一些User实体Set,所有用户都存储在数据库中。我想选择一些使用multiple-selectHTML 表单的用户。使用 Thymeleaf 和 Spring(MVC,引导)。

我完全迷失了我应该使用的东西。我试过@InitBinder,Spring Core Converter,但没有任何效果。问题:@Controller 在 bindingResult.hasErrors() 上失败:

@控制器

@RequestMapping(value = { "/add" }, method = { RequestMethod.POST })
public String saveNew(@Validated @ModelAttribute("company") Company company, BindingResult bindingResult, Model model) {
    if (bindingResult.hasErrors())

公司豆

public class Company {
    private Set<User> users = new HashSet<User>();

Thymeleaf HTML 表单

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

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

4

1 回答 1

4

你可以使用这个代码

<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 中查看双 {{}})。

现在你需要一个像这样的格式化程序:

@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());
}
于 2015-05-31T14:21:29.083 回答