首页 > 解决方案 > 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

标签: javaspringspring-bootthymeleaf

解决方案


推荐阅读