spring-mvc - 使用自定义转换器将查询参数映射到模型
问题描述
我对我的REST API有以下请求:
GET {hostname}:{port}/entity?code=123&recordId=422&prop1=123&prop2=213&propN=512
我想将查询参数转换为模型:
public class EntityFilter {
private String code;
private String recordId;
private MultiValueMap<String, String> props; //all props goes here eg prop1=123, prop2=213
//getters and setters are ommited
}
并将此模型作为控制器的输入参数:
@GetMapping(value = "/entities", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity getEntities(EntityFilter filter) {
//code
}
使用这样的设置,我将使用正确的值填充“ code ”和“ recordId ”,但“ props ”映射将为空。
我如何告诉 Spring 根据一些自定义转换器或其他东西填充模型对象?
我曾尝试使用:
@InitBinder
public void initBinderAll(WebDataBinder binder) {
binder.registerCustomEditor(EntityFilter.class, new FilterProperyEditor());
}
但是像setAsText(String text)这样的FilterPropertyEditor的实际方法根本没有被执行。
解决方案
可能您需要将查询更改为
GET {hostname}:{port}/entity?code=123&recordId=422&props[0]=123&props[1]=213&props[N]=512
推荐阅读
- java - 用于以编程方式关联或启用 Jira 项目中的子组件的 REST API
- c# - C# Windows 窗体 ToolStrip 和 MenuStrip 内存泄漏
- kubernetes - Kubernetes 托管 Auto Scaling 组如何启用指标收集
- git - 如何将源(本地)存储库中的更新(最后几次提交)与使用 git subtree 创建的子目录合并?
- linux - 比较来自多个文件的列值
- python - Python中带有AND条件的LOC搜索字符串
- node.js - 无法读取未定义的属性“forEach”,nodeJS mongoose ejs
- node.js - SAP Business One -> 嵌入式事件的 Rest API
- maven - 无法在项目 SydApp 上执行目标 org.openjfx:javafx-maven-plugin:0.0.6:run (default-cli):错误
- swift - ARKit 对象 2D x, y 位置