如何在控制器中使用@RequestParam获取Map <string,string [] =“”>数据?

时间:2016-12-24 13:36:56

标签: java spring spring-mvc thymeleaf

我有一个包含很多问题的页面,他们可以有多个答案。

对于每个问题,它看起来都是这样的:

<div th:each="answer: ${question.answers}">
    <input th:type="${question.type == T(test_system.entity.QuestionType).SINGLE ? 'radio' : 'checkbox'}"
           type="radio" th:name="${question.id}" th:value="${answer.id}"/>
    [[${answer.text}]]
</div>

我想在控制器中获得一个Map<String, String[]>来处理这个请求。 (关键是问题的id,值是这个问题的答案)

我在控制器中有这个代码:

@RequestMapping(value = "/work/{id}/finish", method = RequestMethod.POST)
public String sendTestAnswers(@PathVariable final long id, @RequestParam final Map<String, String[]> data, final HttpServletRequest request, final Model model) {
    ...
}

但是在数据中,我看到Map<String, String>,每个问题只有一个答案。

同样在request.getParameterMap()中,我看到Map<String, String[]>包含了我需要的所有值。

如何绑定参数以获取具有我需要的所有数据的准备对象? 我不想直接使用HttpServletRequest。

1 个答案:

答案 0 :(得分:1)

我认为您应该尝试使用MultiValueMap:http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/util/MultiValueMap.html

它更适合这类数据。