Контроллер:
@GetMapping("/access")
public ModelAndView accessView() {
...
modelAndView.addObject("newUser", new User());
User.class:
@ManyToMany(...)
private Set<Role> roles = new HashSet<>();
public User() {
this.id = 1L;
this.username = "1212121";
Role role1 = new Role(); role1.setId(1L); role1.setNameRole("QWERTY");
Role role2 = new Role(); role2.setId(2L); role2.setNameRole("ASDFGH");
Role role3 = new Role(); role3.setId(3L); role3.setNameRole("ZXCVBN");
this.roles.add(role1);
this.roles.add(role2);
this.roles.add(role3);
};
Страница jsp:
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
...
<form:form method='POST' ... modelAttribute="newUser">
...
<form:select path="roles" multiple="true" id="userRoles_" class="form-control">
<form:options items="${roles}" itemLabel="nameRole" itemValue="id"/>
</form:select>
Передаю объект User, как из него на странице заполнить из коллекции ролей пользователя form:select?
По-моему, Вы немного неверно описали form:options
. В данном случае выпадающий список не знает откуда именно он должен быть roles
, однако указав значение items
как ${newUser.roles}
, Вы укажете откуда брать значения. Иными словами должно быть что-то типа:
<form:options items="${newUser.roles}" itemLabel="nameRole" itemValue="id" />
Однако у меня в целом странное ощущение от того, что заполнение списка ролей происходит, используя доменную модель user'а.
Возможно имеет смысл использовать такую вещь как @ModelAttribute
и держать модель отдельно от данных. Например, так:
@ModelAttribute("rolesList")
public Set<Role> getRolesList() {
Role role1 = new Role();
role1.setId(1L);
...
Set<Role> roles = new HashSet<Role>();
roles.add(role1);
roles.add(role2);
roles.add(role3);
return roles;
}
Тогда наполнение выпадающего списка на GET
можно будет сделать так:
А User
будет использоваться в форме для дальнейшего, скажем, сохранения.
Надеюсь это ответит на Ваш вопрос... так или иначе.
Всем привет! Подскажите плиз! Пытаюсь разобрать один паттерн, пример использования Android Architecture Components, написанный на Koltin'e и столкнулся с синтаксисом,...