Программа не может разрешить объекты, которые я передаю в html от контроллера.
Модель
public class Taco {
private String name;
private List<String> ingredients;
}
Ингредиент
public class Ingredient {
private final String id;
private final String name;
private final Type type;
public static enum Type {
WRAP, PROTEIN, VEGGIES, CHEESE, SAUCE
}
}
В контроллере.Я пробовал разные варианты ModelAttribute в разных методах, следовал много примеров.Но HTML все еще не может разрешить.
@Slf4j
@Controller
@RequestMapping("/design")
public class DesignTacoController {
public void addIngredientsToModel(Model model) {
List<Ingredient> ingredients = Arrays.asList(
new Ingredient("FLTO", "Flour Tortilla", Type.WRAP),
new Ingredient("COTO", "Corn Tortilla", Type.WRAP),
new Ingredient("GRBF", "Ground Beef", Type.PROTEIN),
new Ingredient("CARN", "Carnitas", Type.PROTEIN),
new Ingredient("TMTO", "Diced Tomatoes", Type.VEGGIES),
new Ingredient("LETC", "Lettuce", Type.VEGGIES),
new Ingredient("CHED", "Cheddar", Type.CHEESE),
new Ingredient("JACK", "Monterrey Jack", Type.CHEESE),
new Ingredient("SLSA", "Salsa", Type.SAUCE),
new Ingredient("SRCR", "Sour Cream", Type.SAUCE)
);
Type[] types = Ingredient.Type.values();
for (Type type : types) {
model.addAttribute(type.toString().toLowerCase(),
filterByType(ingredients, type));
}
}
@GetMapping
@ModelAttribute("design")
public String showDesignForm(Model model) {
addIngredientsToModel(model);
model.addAttribute("design", new Taco());
return "design";
}
private List<Ingredient> filterByType(
List<Ingredient> ingredients, Type type) {
return ingredients
.stream()
.filter(x -> x.getType().equals(type))
.collect(Collectors.toList());
}}
Теперь часть design.html.Не могу разрешить белок, ингредиент.ид, ингредиент.имя.Как я могу это исправить?Я пробовал разные способы:
<form method="POST" th:object="${design}">
<div>
<h3>Pick your protein:</h3>
<div th:each="ingredient : ${protein}">
<input name="ingredients"
type="checkbox"th:value="${ingredient.id}" />
<span th:text="${ingredient.name}">INGREDIENT</span><br/>
</div>
</div>