Я новичок в Spring и Spring Boot и прорабатываю книгу, которая полна недостающей информации.
У меня есть класс тако:
public class Taco {
...
@Size(min=1, message="You must choose at least 1 ingredient")
private List<Ingredient> ingredients;
...
}
Как видите, ingredients
имеет тип List<Ingredient>
, и это проблема, раньше он был типа List<String>
, но это было до того, как я начал сохранять данные в базе данных, теперь это должно быть List<Ingredient>
что разрушает все это.
В контроллере у меня есть следующее (помимо прочего, я думаю, что это единственный необходимый код для решения проблемы, но если вам нужно больше, дайте мне знать):
@ModelAttribute
public void addIngredientsToModel(Model model) {
List<Ingredient> ingredients = new ArrayList<>();
ingredientRepo.findAll().forEach(i -> ingredients.add(i));
Type[] types = Ingredient.Type.values();
for (Type type : types) {
model.addAttribute(type.toString().toLowerCase(), filterByType(ingredients, type));
}
}
private List<Ingredient> filterByType(List<Ingredient> ingredients, Type type) {
return ingredients
.stream()
.filter(x -> x.getType()
.equals(type))
.collect(Collectors.toList());
}
И, наконец, в моем файле с тимелином есть:
<span class="text-danger"
th:if="${#fields.hasErrors('ingredients')}"
th:errors="*{ingredients}">
</span>
Что вызывает ошибку:
thymeleaf Failed to convert property value of type java.lang.String to required type java.util.List
Еще раз, когда private List<Ingredient> ingredients;
был private List<String> ingredients;
, он работал, но теперь он должен быть private List<Ingredient> ingredients;
из-за способа, которым он сохранен в базе данных, но в этот момент он ломается, как это исправить?