как динамически привязать карту к Thymeleaf - PullRequest
0 голосов
/ 19 февраля 2019

Я работаю над демонстрацией объекта с картой в Thymeleaf и отправляю его бэкенду.

Моя целевая сущность имеет вид:

public class Series {
    @Id
    @GeneratedValue
    private long id;

    @ElementCollection
    @CollectionTable(name = "series_food")
    @MapKeyColumn(name = "fid")
    @Column(name = "num")
    private Map<Food, Integer> foods = new HashMap<>();
}//constructors, getters and setters are ignored

, а мои методы контроллера похожи:

@GetMapping("/series/{sid}")
public String getSeries(@PathVariable("sid") Long sid, Model model) {
    Series series = producerService.getSeries(sid);
    model.addAttribute("series", series);
    return "rest/series";
}

@PostMapping("/series")
public String saveSeries(@Valid Series series, Model model) {
    System.out.println("calling addSeries");
    Series series1 = producerService.modifySeries(series);
    model.addAttribute("series", series1);
    return "rest/series";
}

и я связываю его с Thymeleaf следующим образом:

<tr th:each="f,ptr : *{foods}">
    <th ><input type="text" th:value="${f.key.name}"></th>
    <th><input type="text" th:value="${f.value}" th:field="*{foods[__${f.key}__]}"></th>
</tr>

Однако я получил это исключение времени выполнения:

Caused by: org.springframework.beans.InvalidPropertyException: Invalid property 'foods[ycqian.yummy.entity.food.Food@483408f]' of bean class [ycqian.yummy.entity.food.Series]: Invalid index in property path 'foods[ycqian.yummy.entity.food.Food@483408f]'; 
nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'ycqian.yummy.entity.food.Food' for property 'null'; 
nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.lang.Long] for value 'ycqian.yummy.entity.food.Food@483408f'; 
nested exception is java.lang.NumberFormatException: For input string: "ycqian.yummy.entity.food.Food@483408f"

Я прочитал эти вопросы,но они не работают для меня. q1 q2

Как мне решить эту проблему?

=============== ОБНОВЛЕНИЕ =======================

Если я изменю оператор связывания на th:field="*{foods[__${ptr.index}__]}", исключение не будет выдано, но что-то не такс дисплеем.

Ожидается, что представление будет выглядеть как Ожидается , но поле суммы не может быть отображено должным образом real

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