2015-01-14 2 views
2

Company은 에 User 엔티티가 있고, 모든 사용자는 DB에 저장됩니다. HTML 양식의 multiple-select을 사용하는 일부 사용자를 선택하고 싶습니다. Thymeleaf 및 Spring 사용 (MVC, 부팅).양식에서 컬렉션에서 엔티티를 선택하는 방법은 무엇입니까? Spring MVC와 Thymeleaf

나는 사용해야하는 것을 완전히 잃어 버렸습니다. @InitBinder, Spring Core Converter를 시도했지만 아무 것도 작동하지 않았습니다. 문제 : bindingResult.hasErrors에 @Controller도 실패한() :

@Controller

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

이 다중 선택을 구현하는 올바른 방법은 무엇입니까?

+0

나에게 잘 보이는, 당신은 무엇 오류를 얻을 :

이제이 같은 포맷을해야합니까? –

답변

3

이 코드

<form th:object="${company}"> 
<select th:field="*{users}" multiple="multiple"> 
    <option th:each="user : ${allUsers}" th:value="${{user}}" th:text="${user.email}"></option> 
</select> 

을 사용할 수 있습니다 (볼을 두 번 {{}} 일에 : 값).

@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()); 
} 
관련 문제