Thymeleaf - Форма для каждого объекта в списке - PullRequest
0 голосов
/ 03 мая 2018

Я новичок в Thymeleaf и пытаюсь решить следующую проблему:

class Person() {
   int id;
   String name;

   // getter & setter;
}

Фрагмент из класса Controller:

@GetMapping(value = {"..."})
public ModelAndView getXXX(HttpServletRequest request)
{
   ModelAndView mv = new ModelAndView("xxx");
   ...
   List<Person> persons = ... // Let's say a list of Persons {1: "Peter", 2: Anna}
   mv.addObject("persons", persons);
   ...
   return mv;
}

Теперь в шаблоне xxx.html я пытаюсь создать форму для каждого человека в лицах (а не 1 форму для всех людей в лицах). Мой подход пока:

<form th:each="p, stat : ${persons}" 
      th:object="${persons[stat.index]}" 
      th:action="..." method="POST" >

    <input th:field="*{name}" type="text">
</form>

Не удивительно: это не работает. Если я удаляю элемент ввода, исключение не происходит. С помощью input-element я получаю следующее сообщение (вызвано: java.lang.IllegalStateException):

Neither BindingResult nor plain target object for bean name 'persons[stat' available as request attribute

Есть ли способ только добавить список объектов в модель и при этом иметь возможность создавать формы для каждого объекта списка и привязывать объект-ответчик к каждой форме?

Спасибо.

1 Ответ

0 голосов
/ 03 мая 2018

Ваш контроллер, похоже, не так.

Смотрите здесь https://www.thymeleaf.org/doc/articles/springmvcaccessdata.html

так

@RequestMapping(value = "message", method = RequestMethod.GET)
    public String messages(Model model) {
        model.addAttribute("messages", messageRepository.findAll());
        return "message/list";
    }

Вы просто передаете нужные объекты (или список) в объект модели

model.addAttribute("attributeename", attributeobject)

тогда вы сможете повторить его.

РЕДАКТИРОВАТЬ: я не знаю, как на английском ...

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