首页 > 解决方案 > 如何将字符串 [] 从 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) {
    }

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

谢谢!

标签: springspring-mvcspring-data-jpathymeleaf

解决方案


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

JSON.stringify(array);

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

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

推荐阅读