gpt4 book ai didi

spring-boot - thymeleaf 无法将 java.lang.String 类型的属性值转换为所需类型 java.util.List

转载 作者:行者123 更新时间:2023-12-05 04:01:45 24 4
gpt4 key购买 nike

我是 Spring 和 Spring Boot 的新手,正在阅读一本充满缺失信息的书。

我有一个炸 Jade 米饼课:

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>这打破了整个事情。

在 Controller 中我有以下内容(除其他外,我认为这是手头问题唯一需要的代码,但如果您需要更多,请告诉我):

@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());
}

最后在我的 thymeleaf 文件中我有:

<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;由于它保存在数据库中的方式,但此时它中断了,如何修复?

最佳答案

我遇到了同样的问题,我们这里需要的是一个转换器。

package tacos.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import tacos.Ingredient;
import tacos.data.IngredientRepository;

@Component
public class IngredientByIdConverter implements Converter<String, Ingredient> {

private IngredientRepository ingredientRepo;

@Autowired
public IngredientByIdConverter(IngredientRepository ingredientRepo) {
this.ingredientRepo = ingredientRepo;
}

@Override
public Ingredient convert(String id) {
return ingredientRepo.findOne(id);
}

}

关于spring-boot - thymeleaf 无法将 java.lang.String 类型的属性值转换为所需类型 java.util.List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55093954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com