spring - 如何将字符串 [] 从 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) {
}
但它说没有收到所需的参数。
谢谢!
解决方案
您可以将 javascript 数组转换为JSON
使用以下代码。
JSON.stringify(array);
在控制器中,将其作为字符串参数接受,然后使用 Jackson 库将其转换回数组,如下所示:
ObjectMapper mapper = new ObjectMapper();
String [] array = mapper.readValue(jsonString, String[].class):
推荐阅读
- node.js - 从谷歌电子表格访问本地 nodejs 服务器
- javascript - 将音频从 ReactMediaRecorder 发送到服务器
- c# - 使用自定义 ValueConverter 时选择 System.InvalidCastException
- bash - 用带参数的函数的返回值编写 if 语句的正确方法是什么?
- php - wordpress 自定义帖子类型返回 404
- c# - GeckoFX 60 的元素检查器
- css - 带 CSS 的 SVG 半圆
- ssl - 自签名证书出现 500 错误
- tensorflow - 如何使用 TensorFlow Serving 进行预处理和后处理
- typescript - 如何通过 spfx vue js 上的 rest api 获取托管元数据类型(共享点)值