因此,请求的网址看起来像
localhost:8080/contacts?id=22&name=John&eventId=11
而且我还有一个对象可以将请求映射到
public class ContactDTO {
private Long id;
private String name;
private Long eventId;
}
我使用控制器方法,例如将请求参数传递给对象
@GetMapping("/contacts")
public ContactDTO contacts(ContactDTO contact) {
// everything is awesome! contact maps clearly
return contact;
}
问题是如何像这样映射但名称不同
localhost:8080/contacts?id=22&name=John&event_id=11
设置@JsonAttribute无效,因为Jackson映射器仅在requestbody中起作用。也许我应该编写自定义HandlerMethodArgumentResolver或类似的东西?
P.S。我有一个肮脏的技巧(注入了objectMapper,所以我可以使用@JsonAttributes),但是这种情况在数组映射上失败,与requestbody的相同映射可以正常工作
@GetMapping("/contacts")
public ContactsDTO contacts(@RequestParam Map<String,String> params) {
ContactDTO contactDTO = objectMapper.convertValue(params,ContactDTO.class);
return contactDTO;
}
使用@requestparam的@RequestBody insteaf。