java - Thymeleaf HashMap 请求绑定
问题描述
是否可以在没有编辑器/转换器的情况下将来自 Thymeleaf 页面的请求映射到模型对象?
我有一个简单的 Thymeleaf 页面,我试图将地图绑定到请求:
@PostMapping("/someendpoint")
public String method1(CustomRequest map, ModelMap model){
System.err.println("Received: " + map);
return "demo";
}
我的 CustomRequest POJO 很简单:
public class CustomRequest {
Map<String, String> map = new HashMap<>();
//constructors and getters/setters
}
我的 Thymeleaf 页面更简单:
<form action="#" th:action="@{/someendpoint}" th:object="${customRequest}" method="post">
<input type="text" th:field="*{map}" />
<td><input type="submit" name="submit" class="button" value="Send" /></td>
</form>
当我提交表单时,我收到此错误:
字段 'map' 上的对象 'customRequest' 中的字段错误:拒绝值 [{"a":"b"}]; 代码 [typeMismatch.customRequest.map,typeMismatch.map,typeMismatch.java.util.Map,typeMismatch]; 参数 [org.springframework.context.support.DefaultMessageSourceResolvable: 代码 [customRequest.map,map]; 论据 []; 默认消息[地图]];默认消息 [无法将类型“java.lang.String”的属性值转换为属性“map”所需的类型“java.util.Map”;嵌套异常是 java.lang.IllegalStateException:无法将类型“java.lang.String”的值转换为属性“map”所需的类型“java.util.Map”:找不到匹配的编辑器或转换策略]]
没有编辑器/转换器可以做到吗?是否可以直接将请求正文映射到Map
?
解决方案
推荐阅读
- firebase - 在 Cloud Firestore 数据库中保存二进制数据安全吗?
- azure-devops - 如何正确更新我的 PAT,以便我的部署组不会因 PAT 到期而停止工作?
- c# - 错误:更新数据库命令后表 'Table_name' 已存在
- java - 如何读取 .properties 文件中的当前项目路径
- node.js - 我是否必须在需要使用 npm 命令的 bitbucket 管道中的每个步骤中安装 npm
- c# - 如何解释我的方法的参数是“null”而不是“int”
- android - 无法打开从 xamarin.forms 中的 byte[] 下载的文件
- javascript - API调用中的错误处理更改问题
- c# - 如何在 ASP.NET MVC 5 上公开 WS-Federation 元数据?
- elasticsearch - 使用 groupby 并具有等效功能的弹性搜索查询