Скажите, пожалуйста, как правильно связать коллекцию HashSet.
Существует класс App, содержащий Set, который впоследствии создается как новый HashSet ().В контроллере есть описание метода GET, в качестве параметра модели я передаю вновь созданный экземпляр App с уже инициализированным HashSet, который имеет 1 элемент
@RequestMapping(value = "/admin/appNew", method = RequestMethod.GET)
public ModelAndView appNew(HttpServletRequest request) throws IOException {
ModelAndView modelAndView = new ModelAndView();
App app = CreateNewApp();
modelAndView.addObject("app", app);
modelAndView.setViewName("admin/appEdit");
return modelAndView;
}
private App CreateNewApp() throws IOException {
Version version = new Version();
version.setComment("AppVersion");
version.setNumber(0);
version.setLicense_value(0);
App app = new App();
app.setName("Новое приложение");
app.setAutor("Автор");
app.setVersions(new HashSet<Version>());
app.getVersions().add(version);
return app;
}
насбоку представления я делаю итерацию для HashSet
<form th:object="${app}" th:action="@{appNew}" method="POST" class="form-signin">
<input type="text" th:field="*{name}" th:placeholder="Name" class="form-control" /> <br/>
<input type="text" th:field="*{autor}" th:placeholder="Autor" class="form-control" /> <br/>
<input type="number" th:field="*{active}" th:placeholder="Active" class="form-control" /> <br/>
<div th:object="${app}" class="card mb-4 box-shadow">
<div th:each="ver, step :${app.versions}">
<div th:object="${ver}">
<input th:field="*{comment}" th:value="${ver.getComment()}" class="card-text"></input>
</div>
</div>
</div>
<button class="btn btn-lg btn-primary btn-block" name="Submit" value="create" type="Submit" th:text="Create"></button>
</form>
Значения коллекции правильно заполняются в th: value и отображаются, но при попытке связать каждое поле через th: для последующего запроса POST,возникает ошибка
Caused by: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'ver' available as request attribute
, если вы удалите th: field = "* {comment}", тогда будет отображен список всего HashSet, но данные не попадут в контроллер, обрабатывающий запрос POSTпоскольку не будет привязки