Spring-контроллер получает многомерный массив в качестве параметров записи - PullRequest
0 голосов
/ 18 июня 2019

У меня есть форма, которую можно динамически редактировать - пользователь может добавлять / удалять строки и информацию Структура такова: каждый элемент в многомерном массиве имеет следующие элементы:

  1. id_material
  2. id_detail

и в строках, которые можно добавлять / удалять в форме:

  • имя
  • количество
  • файл

форма:

<input type="hidden" name="myData[id_material][0]" value="123">
<input type="hidden" name="myData[id_detail][0]" value="456">
<input type="text" name="myData[ime_detail][0][1]" value="foo">
<input type="text" name="myData[quantity][0][1]" value="1">
<input type="file" name="myData[file][0][1]" accept=".pdf, .jpg, .dxf">

<input type="hidden" name="myData[id_material][1]" value="123">
<input type="hidden" name="myData[id_detail][1]" value="456">
<input type="text" name="myData[ime_detail][1][1]" value="foo">
<input type="text" name="myData[quantity][1][1]" value="1">
<input type="file" name="myData[file][1][1]" accept=".pdf, .jpg, .dxf">
<input type="text" name="myData[ime_detail][1][2]" value="bar">
<input type="text" name="myData[quantity][1][2]" value="2">
<input type="file" name="myData[file][1][2]" accept=".pdf, .jpg, .dxf">

Контроллер My Spring:

@RequestMapping(value = myURL, method = RequestMethod.POST, consumes = {"multipart/form-data"})
public @ResponseBody error save(ModelMap model, HttpServletRequest req,
        HttpSession session, HttpServletResponse resp,
        @PathVariable("locale") String loc,
        @RequestParam Map<String, Object> params) {

    System.out.println("save() method invoked");

    return null;
}

Однако метод контроллера никогда не вызывается при отправке формы. Я попытался обернуть параметры в классе, как это:

public class CustomWrapper {
    private Map<String, Object> customMap= new HashMap<String, Object>();
    public Map<String, Object> getCustomMap() {
        return customMap;
    }
    public void setCustomMap(Map<String, Object> customMap) {
        this.customMap = customMap;
    }
}

все еще не вызвано. Ребята, вы знаете, как правильно отправить форму?

...