Передача данных из формы spring mvc

322
02 сентября 2018, 16:50

Необходима помощь. Делаю страницу с вопросами (тесты). Имеется два класса модели:

public class Answers {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private int id;
@Column(name = "answer")
private String answer;
@Column(name = "flag")
private int flag;
@Column(name = "id_question")
private int QuestionId;
// getters and setters.
}

И

public class Questions {
@Id
@GeneratedValue()
@Column(name = "id")
private int id;
@Column(name = "question")
private String question;
@Column(name = "lesson")
private int lesson;
// getters and setters.
}

DAO классы и сервис, с двумя utility классами который тасует вопросы и ответы. На выходе при передаче данных на представление получается такая структура:

Map<Questions, List<Answers>>

И я спокойно разворачиваю её на представлении.

<c:url var="testAction" value="/test/check"/>
<form:form action="${testAction}" modelAttribute="questions" method="post">
    <c:forEach items="${questions}" var="questions">
        <h3>${questions.key.question}</h3>
            <c:forEach items="${questions.value}" var="answers">
                <label for="radio">${answers.answer}</label>
                <input type="radio" name="${questions.key.id}" 
value="${answers.id}" id="radio"/>
                <br>
            </c:forEach>
    </c:forEach>
    <br>
    <input type="submit" value="Отправить"/>
</form:form>

Но когда дело доходит до передачи этих данных из формы, я начинаю задумываться, а как же их принять?

@RequestMapping(value = "/test", method = RequestMethod.GET)
public String getTestPage(Model model) {
    model.addAttribute("questions", testPageService.getListQuestions());
    return "test";
}
@RequestMapping(value = "/test/check", method = RequestMethod.POST)
public String getTestCheckPage(???) {

    return "testcheck";
}

Буду очень признателен, если кто-нибудь подскажет, как это можно реализовать. А если нет, то в какую сторону смотреть, и в каком виде лучше всего реализовывать структуру данных.

UPD. Сгенерированный JSP код.

<form id="questions" action="/test/check" method="post">
    <h3>Сколько будет 2 + 2 * 2?</h3>
        <label for="radio">7</label>
        <input type="radio" name="4"
               value="5" id="radio"/>
        <br>
        <label for="radio">8</label>
        <input type="radio" name="4"
               value="4" id="radio"/>
        <br>
        <label for="radio">6</label>
        <input type="radio" name="4"
               value="6" id="radio"/>
        <br>

    <h3>Сколько будет 2 + 2?</h3>
        <label for="radio">2</label>
        <input type="radio" name="3"
               value="2" id="radio"/>
        <br>
        <label for="radio">5</label>
        <input type="radio" name="3"
               value="1" id="radio"/>
        <br>
        <label for="radio">4</label>
        <input type="radio" name="3"
               value="3" id="radio"/>
        <br>

        <br>
        <input type="submit" value="Отправить"/>
</form>
Answer 1

Вам надо на выходе использовать что-то наподобие

<input type="radio" name="questions[${questions.key.id}]" value="${answers.id}" id="radio"/>

а на входе использовать

public String getTestCheckPage(@ModelAttribute("questions") HashMap<String, String> questions) {
READ ALSO
Периодические проблемы с подключением

Периодические проблемы с подключением

Есть вот такой код, через который я общаюсь с сервером

231
Вывод html контента на JSF страницу

Вывод html контента на JSF страницу

На сайте есть редактор статей, он генерирует HTML код в зависимости от свойств текстаЕго я отправляю на сервер, и чтобы снова вывести на странице...

307
Как получить подтверждение выполнения sql запроса если не было затронуто строк

Как получить подтверждение выполнения sql запроса если не было затронуто строк

возникла необходимость удалять строки в бд по условию, проблема в том что когда sql запрос выполняется успешно, но количество затрагиваемых...

260
Реализация метода Put(), getByKey для кастомного HashMap

Реализация метода Put(), getByKey для кастомного HashMap

Вопрос с собеседования:"нужно реализовать свои Put() и getByKey, для хеш-мапы" Может кто-то подсказать, как это можно сделать?

212