Я пытаюсь передать Map‹ String, String> в Spring через Ajax, используя нотацию @ModelAttribute. С клиентом IntelliJ REST мне просто нужно добавить параметр «infos [KEY]» со значением «VALUE», чтобы получить соответствующую пару ключ/значение, заполненную в хэш-карте.
Я пытаюсь воспроизвести такое же поведение с помощью JQuery.
function update()
{
$.ajax(
{
type: "PATCH",
url: "url",
dataType: "json",
data: {"infos[TheAnswer]": "42"},
success: function(data)
{
alert("OK");
}
});
}
Но контроллер Spring не может заполнить мою модель. Вот он (но я не должен быть проблемой, потому что, как я уже сказал, клиент IntelliJ REST работает нормально)
public class ExtraInfos implements Serializable
{
protected HashMap<String, String> infos = new HashMap<String, String>();
public HashMap<String, String> getInfos()
{
return infos;
}
public void setInfos(HashMap<String, String> infos)
{
this.infos = infos;
}
}
Вот метод моего контроллера:
@RequestMapping(value = "/{id}", method = RequestMethod.PATCH)
public
@ResponseBody
Contact updateContact(@PathVariable("id") Long id,
@ModelAttribute ExtraInfos infos)
{
return this.service.update(id, infos);
}