Пружинная загрузка [Thymeleaf]: EL1008E: Не удается найти свойство или поле «категория» для объекта типа «java.util.Optional» - PullRequest
1 голос
/ 10 июня 2019

У меня есть связь между двумя таблицами продукт и категория продукта . Теперь я хочу изменить продукт.

Я создал список, который, когда я щелкаю по кнопке «Редактировать», открывает другой интерфейс с подробностями о продукте и категорией «Продукт» в виде выпадающего меню, но я получаю сообщение об ошибке «thimeleaf th»: выбрано, так как я хочу, чтобы оно отображало выпадающий список с выбранным элементом. в этом, но я получаю ошибку

EL1008E: Свойство или поле 'категория' не может быть найдено для объекта типа 'java.util.Optional'

Пожалуйста, помогите решить

Я пытался изменить выбор для ввода, он работает нормально

<input type="text" class="form-control" id="name" name="name" th:field="<b>${update.category.ProductCategoryID}"</b> />

, но использование выбранного не работает

<select class="form-control" id="category" name="category">
    <option 
        th:each="prodCat : ${prodCatList}" 
        th:value="${prodCat.ProductCategoryID}" 
        th:text="${prodCat.CategoryName}"                            
        th:selected="${prodCat.ProductCategoryID} =={update.category.ProductCategoryID}">
    </option>
</select>

Ниже приведен фрагмент кода

<form th:object="${update}" th:action="@{/product/save}" method="post">
  <div id="myForm">
....
<input type="text" class="form-control" id="name" name="name" th:field="${update.category.ProductCategoryID}" /> 
<select class="form-control" id="category" name="category">
    <option 
        th:each="prodCat : ${prodCatList}" 
        th:value="${prodCat.ProductCategoryID}" 
        th:text="${prodCat.CategoryName}"
        th:selected="${prodCat.ProductCategoryID} == ${update.category.ProductCategoryID}" <-- problem
        >
    </option>
</select>
<input type="text" class="form-control" id="ProdID" name="ProdID" th:field="${update.category.CategoryName}" />

Ответы [ 2 ]

1 голос
/ 10 июня 2019

Спасибо TechFree.

Это работает, я допустил ошибку, когда не беру объект из необязательного класса

Вот код, который я поставил, и он работал.

@GetMapping("/edit/{pctid}")
public String findOne(
            @PathVariable(value = "pctid") Integer pctid,
        Model model) {
    model.addAttribute("prodCatList", productCategoryRepo.findAll());

   productRepo.findById(pctid).ifPresent(o -> model.addAttribute("update", o));
//      model.addAttribute("update",productRepo.findById(pctid));
        return "/prod/edit";

    }
0 голосов
/ 10 июня 2019

Похоже, что обновление является необязательным, а не объектом, и представление получило опциональное, а не прямое обновление.

//something like this needs to be done when updating the model for this attribute
Optional<Update> update = <your code to get this in Java>
update.ifPresent(foundUpdateObject -> model.addAttribute("update", foundUpdateObject))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...