Stack Overflow на русском Asked on November 13, 2021
Делаю страницу с вопросами (тесты). Имеется два класса модели:
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>
Вам надо на выходе использовать что-то наподобие
<input type="radio" name="questions[${questions.key.id}]" value="${answers.id}" id="radio"/>
а на входе использовать
public String getTestCheckPage(@ModelAttribute("questions") HashMap<String, String> questions) {
Answered by Roman C on November 13, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP