form:select не сетерит кастомный объект

363
31 июля 2017, 11:56

Дано:

Сущность "тест"
Сущность "раздел"
Отношения между ними "много к одному"

В форме конструктора теста и модерирования теста нужно сделать выпадающий лист разделов для возможности вложить/перенести тест в нужный раздел(т.е. юзверь создающий тест имеет возможность выбрать куда пихнуть в то время как модератор может это поменять). Но 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). Остальные параметры которые аля имя, автор и т.п. при закоментированом параметре секции прекрасно работают.

READ ALSO
Помогите разобраться с JSON

Помогите разобраться с JSON

С JSON особо не знаком, но хочу попробовать решить задачу с помощью негоТакая проблема, есть URL на данные, данные выглядят примерно так:

257
Android - как узнать создался ли элемент

Android - как узнать создался ли элемент

Динамический создаю кнопку, как мне узнать что кнопка создана? Точнее, мне нужно условие (пока кнопка не создана) не делать того-то?

267
Как решить такую задачу? [требует правки]

Как решить такую задачу? [требует правки]

Дано: 10 человек (у каждого есть яблоко)Каждый из них может отдать другому это яблоко, а может и не отдать

254