我对 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
}
使用这样的设置,我将在“ 代码”和“ recordId ”中填充适当的值,但“ 道具”映射将为空。
如何告诉Spring根据一些自定义转换器或其他东西填充模型对象?
我尝试使用:
@InitBinder
public void initBinderAll(WebDataBinder binder) {
binder.registerCustomEditor(EntityFilter.class, new FilterProperyEditor());
}
但是 FilterPropertyEditor 的实际方法(如 setAsText(String text))根本没有执行。
答案 0 :(得分:1)
可能您需要将查询更改为
GET {hostname}:{port}/entity?code=123&recordId=422&props[0]=123&props[1]=213&props[N]=512