假设我有一个问题列表的表单,我需要0/1的答案。我可以轻松地使用无线电建模静态列表,例如
<input type="radio" name="question1" value="0">
<input type="radio" name="question1" value="1">
<br>
<input type="radio" name="question2" value="0">
<input type="radio" name="question2" value="1">
@RequestMapping("/answer")
public String answer(Integer question1, Integer question2) {
但我有一个动态的问题列表,每个问题都有一个数字ID。因此,我尝试对其进行建模,如下所示(HTML是通过问题列表上的迭代动态创建的):
<input type="radio" name="question[42]" value="0">
<input type="radio" name="question[42]" value="1">
<br>
<input type="radio" name="question[51]" value="0">
<input type="radio" name="question[51]" value="1">
其中42和51是问题ID。 我期望捕获我的Spring控制器的Map参数中的所有值,如下所示:
@RequestMapping("/answer")
public String answer(@RequestAttribute("question") HashMap<Integer, Integer> question) {
它没有用(该方法没有被调用)。 我也尝试过使用字符串ID:
<input type="radio" name="question['42']" value="0">
@RequestMapping("/answer")
public String answer(@RequestAttribute("question") HashMap<String, Integer> question) {
和以前一样。 它只有在我使用字符串/字符串的映射时才有效,但在这种情况下,我在地图中获取所有请求参数,然后我将需要解析:
@RequestMapping("/answer")
public String answer(@RequestAttribute("question") HashMap<String, String> question) {
--> question.keys: "question[42]", "question[51]"
那么处理动态无线电的正确方法是什么,或者更常见的是类似地图的请求参数?
答案 0 :(得分:0)
我不知道为什么,但如果我把地图放在一个bean里面就可以了:
public class QuestionForm {
private HashMap<Long, String> question;
public HashMap<Long, String> getQuestion() {
return question;
}
public void setQuestion(HashMap<Long, String> question) {
this.question = question;
}
}
@RequestMapping("/answer")
public String answer(QuestionForm questionForm) {