Мне нужно выбрать значения из одного массива и назначить его другому массиву. Использование Spring Thymeleaf. Не знаю, как получить эти выбранные значения. Мои классы:Вход в массив Thymeleaf
@Entity
public class Collaborator {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Size (min=3, max=32)
private String name;
@NotNull
@ManyToOne (cascade = CascadeType.ALL)
private Role role;
public Collaborator() {}...
@Entity
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Size(min = 3, max = 99)
private String name;
public Role() {}....
Мои контроллеры:
@RequestMapping("/project_collaborators/{projectId}")
public String projectCollaborators(@PathVariable Long projectId, Model model) {
Project project = mProjectService.findById(projectId);
List<Collaborator> allCollaborators = mCollaboratorService.findAll();
List<Collaborator> assignments = new ArrayList<>();
if (project.getRolesNeeded()!=null) {
for (int i=0;i<project.getRolesNeeded().size();i++) {
assignments.add(new Collaborator("Unassigned", project.getRolesNeeded().get(i)));
assignments.get(i).setId((long) 0);
}
}
model.addAttribute("assignments", assignments);
model.addAttribute("allCollaborators", allCollaborators);
model.addAttribute("project", project);
return "project_collaborators";
}
@RequestMapping(value = "/project_collaborators/{projectId}", method = RequestMethod.POST)
public String projectCollaboratorsPost(@ModelAttribute Project project, @PathVariable Long projectId, Model model) {
Project p = mProjectService.findById(projectId);
//mProjectService.save(project);
return "redirect:/project_detail/{projectId}";
}
и шаблон:
<form th:action="@{'/project_collaborators/' + ${project.id}}" method="post" th:object="${project}">
<label th:text="'Edit Collaborators: ' + ${project.name}">Edit Collaborators: Website Project</label>
<ul class="checkbox-list">
<li th:each="a : ${assignments}">
<span th:text="${a.role.name}" class="primary">Developer</span>
<div class="custom-select">
<span class="dropdown-arrow"></span>
<select th:field="${a.id}">
<option th:each="collaborator : ${allCollaborators}" th:value="${collaborator.id}" th:text="${collaborator.name}">Michael Pemulis</option>
</select>
</div>
</li>
</ul>
<div class="actions">
<input type="submit" value="Save" class="button"/>
<a href="#" class="button button-secondary">Cancel</a>
</div>
</form>
Как вы можете видеть, что я хочу, чтобы пользователь может выбрать для каждой роли (roleNeeded) любого сотрудника из (allCollaborators) и сохраните это назначение в списке (назначения).
И я получаю сообщение об ошибке:
ava.lang.IllegalStateException: Ни BindingResult, ни простой объект целевого для имени боб «а» доступен как атрибут запроса
Так вопрос: как чтобы решить эту проблему, назначьте значения из одного массива в другой в шаблоне и извлеките эти значения в моем контроллере.
Большое спасибо, отлично работает! – zzheads
@zzheads Рад слышать. Не забудьте принять ответ, пожалуйста;). – BitExodus
Конечно, все. Не могли бы вы проверить мой другой вопрос о том же проекте?) здесь: http://stackoverflow.com/questions/38693971/input-type-date-thymeleaf – zzheads