【问题标题】:How to send String[] from Thymeleaf multiple select form to Controller如何将字符串 [] 从 Thymeleaf 多选表单发送到控制器
【发布时间】:2019-03-18 14:32:20
【问题描述】:

我有一个带有表单的模板:

<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) {
    }

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    JSON.stringify(array);
    

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

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

    【讨论】:

    • 我现在可以从 html 中获取一个 url 查询字符串,但是如何将这个字符串转换为 json?我得到的字符串类似于 states=NY&state=LA。不是 json 字符串
    【解决方案2】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 2015-09-04
    相关资源
    最近更新 更多