thymeleaf Не удалось преобразовать значение свойства типа java.lang.String в требуемый тип java.util.List - PullRequest
0 голосов
/ 11 марта 2019

Я новичок в 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; из-за способа, которым он сохранен в базе данных, но в этот момент он ломается, как это исправить?

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