validation - 如何从表单中的集合中选择实体? Spring MVC 和 Thymeleaf

标签 validation spring-mvc thymeleaf spring-validator

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

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

@ Controller

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

公司 bean
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>

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

最佳答案

你可以使用这个代码

<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());
}

关于validation - 如何从表单中的集合中选择实体? Spring MVC 和 Thymeleaf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27953700/

相关文章:

image - Thymeleaf - 充当超链接的图像

javascript - 如何使用 jquery 在 html 上显示 ajax 列表响应?

thymeleaf - 什么是 Thymeleaf 可缓存模板?

php - 日期时间输入字段的值无法通过验证

java - 如何使用翻译器和/或 validator 使 Tapestry 4 中的字符串字段成为必需?

c# - 最大长度不起作用 Web API 2 模型

spring - @SQL 每堂课一次

java - 在 DispatcherServlet 中未找到名称为 'spring-dispatcher' 的 URI [/FirstSpringMVCProject/stylegreen.css] 的 HTTP 请求映射

java - 在 Jsp 中显示来自类的对象列表

ruby-on-rails - 如何在 Rails 模型中验证字符串是否为 json