Дано:
Сущность "тест"
Сущность "раздел"
Отношения между ними "много к одному"
В форме конструктора теста и модерирования теста нужно сделать выпадающий лист разделов для возможности вложить/перенести тест в нужный раздел(т.е. юзверь создающий тест имеет возможность выбрать куда пихнуть в то время как модератор может это поменять). Но form:select получив лист секций преобразует каждый в строку. И на этом моменте все ломается. Т.е. обратно из клиента прилетает уже строка которую невозможно распознать как объект "секция". Что с таком случае делать? Лобовое решение аля "сделай секции обычным массивом строк" как то не очень выглядит но если других вариантов нету то ок, конечно.
JSP:
<form:form modelAttribute="candidateTest" action="${saveChanges}"
method="POST">
<table>
<tr>
<td><spring:message code="test.section" /></td>
<td><form:select path="section">
<c:forEach items="${listSections}" var="section"
varStatus="status">
<form:option value="${section}">${section}</form:option>
</c:forEach>
</form:select></td>
</tr>
</tr>
</table>
<br />
<input type="submit" class="btn btn-primary" value="Save" />
</form:form>
Controller:
@RequestMapping("/review/{id}")
public String editTest(@PathVariable("id") long id, Model model) {
Test test = this.testService.getFullTestById(id);
model.addAttribute("candidateTest", test);
model.addAttribute("listSections", sectionService.findAll());
return "review";
}
@RequestMapping(value = "/review/savechanges", method = RequestMethod.POST)
public String saveChanges(@ModelAttribute("candidateTest") Test candidateTest, Model model) {
testService.updateTest(candidateTest);
model.addAttribute("candidateTest", candidateTest);
model.addAttribute("candidateQuestions", candidateTest.getQuestions());
// model.addAttribute("listSetions", arg1)
return "redirect:/tests/list";
}
Уточню кое что: да, код дан не полностью. Причина в том что конкретно код форма секции не работает (т.е. отображаются все нынче существующие разделы, но не сохраняются потому что вылетает HTTP Status 400 – Bad Request). Остальные параметры которые аля имя, автор и т.п. при закоментированом параметре секции прекрасно работают.
Продвижение своими сайтами как стратегия роста и независимости