Возврат коллекции из JSP в контроллер - PullRequest
0 голосов
/ 28 марта 2019

Форма, в которую я передал Collection of Booleans (то есть), изменяется флажком для каждого элемента.Когда атрибут (коллекция) отправляется в контроллер, возвращается значение NULL.

Коллекция называется isSubstituted, и я использую другой список под названием items, в котором я печатаю название заменяемых или отсутствующих в форме элементов.

Код контроллера:

    @RequestMapping(value = "/edit", method = RequestMethod.POST, params = "save")
public ModelAndView save(@Valid final Revision revision, @RequestParam Collection<Boolean> isSubstituted, final BindingResult binding) {
    ModelAndView result = new ModelAndView();
    Revision saved;

    Collection<Boolean> res = isSubstituted;

    if (binding.hasErrors())
        result = this.createEditModelAndView(revision);
    else
        try {
            saved = this.revisionService.save(revision);
            Collection<Revision> revisions = this.revisionService.getRevisionsByVehicle(saved.getVehicle().getId());
            result.addObject("revisions",revisions);
            result = new ModelAndView("redirect:/revision/garage/listByVehicle?varId=" + saved.getVehicle().getId());
        } catch (final Throwable oops) {
            result = this.createEditModelAndView(revision, "commit.error");
        }
    return result;
}

И другой метод:

protected ModelAndView createEditModelAndView(final Revision revision, final String messageCode) {
    ModelAndView result;
    Vehicle vehicle = revision.getVehicle();
    Collection<String> items = new ArrayList<>();
    Configuration c = this.configurationService.findAll().iterator().next();
    Collection<Boolean> isSubstituted = revision.getIsSubstituted();

    if(revision.getVehicle().getType().equals(VehicleType.motorbike))
        items = c.getItemsForMoto();
    else
        items = c.getItemsForCar();


    result = new ModelAndView("revision/edit");
    result.addObject("vehicle", vehicle);
    result.addObject("revision", revision);
    result.addObject("items", items);
    result.addObject("isSubstituted", isSubstituted);
    result.addObject("message", messageCode);
    result.addObject("requestURI", "/revision/garage/edit");

    return result;

}

Код представления:

    <jstl:forEach var="item" items="${items}" varStatus="count">
            <p><jstl:out value="${item}"/>:</p>

            <p>
                <label/>
                <input path="${isSubstituted[count.index]}" name="${item}" type="checkbox"/>
                <span><jstl:out value="Substituted"/></span>
                </label>

            </p>

        </jstl:forEach>

Фактические результаты таковы, что атрибут (список называется isSubstituted) прийти как ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...