如何将Thymeleaf多选表单中的String []发送到Controller

时间:2018-10-13 16:44:19

标签: spring spring-mvc spring-data-jpa thymeleaf

我有一个具有以下形式的模板:

<h2>Favorite States</h2>
<form action="#" th:action="@{/states}" name="states" method="post">
    <select class="js-example-basic-multiple" multiple="multiple" style="width: 60%">
        <option th:each="state: ${states}"  th:utext="${state.name}"></option>
    </select>
    <button type="submit" class="btn btn-primary">Submit</button>
</form>

我想从此表单中获取String [],例如,如果用户选择了NY,CA,MA州,则我想在我的后置地图控制器中获取String[] selectedStates = {"NY", "CA", "MA"};。我怎样才能做到这一点? 我尝试过

@GetMapping(path="/states")
    public @ResponseBody String statesList (@RequestParam String[] name) {
    }

但是它说没有收到必需的参数。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用以下代码将javascript数组转换为JSON

JSON.stringify(array);

然后在控制器中,将其作为String参数接受,然后使用Jackson库将其转换回数组,如下所示:

ObjectMapper mapper = new ObjectMapper();
String [] array = mapper.readValue(jsonString, String[].class):

答案 1 :(得分:0)

您可以将其包装并作为模型属性传递