@Nulltiton

Свойства или поле не могут быть найдены?

Есть отдельное DTO для списка userDTO
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import test.Users;
import java.util.List;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UsersDTO {
    private List<User> users;
}


Написал метод для вывода информации через GET на thymeleaf
@GetMapping("/users")
    public String showUsersPage(Model model) {
        UsersDTO usersDTO = new UsersDTO();
        List<User> users = userService.getUsers();
        usersDTO.setUsers(users);
        model.addAttribute("users", usersDTO);
        return "users";
    }


Thymeleaf
<form method="post" th:action="@{'/users/'}" th:object="${users}">
    <table class="table table-bordered">
        <thead>
           <tr>
               <th>Id</th>
               <th>Название</th>
               <th>Порядковый номер</th>
           </tr>
       </thead>
       <tbody>
           <tr class="Authors-item" th:each="user, item : *{users}">
               <td th:text="*{users[__${item.index}__].id}">Id</td>
               <td th:text="*{users[__${item.index}__].name}">End</td>
               <td class="dragElement" draggable="true">
                   <input type="text" th:field="*{users[__${item.index}__].sequence}" style="border: none; outline: none;">
               </td>
           </tr>
       </tbody>
   </table>
   <input type="submit" class="btn btn-block btn-primary btn-lg font-weight-medium auth-form-btn" value="СОХРАНИТЬ">
 </form>


Выдает ошибку "EL1008E: Property or field 'users' cannot be found on object of type 'test.usersDTO' - maybe not public or not valid?"
Все поля паблик, информация лежит notnull, подскажите, в чем может быть проблема?
  • Вопрос задан
  • 68 просмотров
Решения вопроса 1
@Nulltiton Автор вопроса
Решил проблему так:
<form method="post" th:action="@{'/users/'}" th:object="${users.users}">
    <table class="table table-bordered">
        <thead>
           <tr>
               <th>Id</th>
               <th>Название</th>
               <th>Порядковый номер</th>
           </tr>
       </thead>
       <tbody>
           <tr class="Authors-item" th:each="user, item : *{users.users}">
               <td th:text="*{user.id}">Id</td>
               <td th:text="*{user.name}">End</td>
               <td class="dragElement" draggable="true">
                   <input type="text" th:field="*{user.sequence}" style="border: none; outline: none;">
               </td>
           </tr>
       </tbody>
   </table>
   <input type="submit" class="btn btn-block btn-primary btn-lg font-weight-medium auth-form-btn" value="СОХРАНИТЬ">
 </form>

Оказывается нужно было после имени модели через . обратиться к списку, а дальше уже можно через переменную для итерации user спокойно обратиться к свойствам элемента списка
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Dementor
программист, архитектор, аналитик
Посмотрите пример, как делаются в шаблоне итерации по спискам: https://habr.com/ru/articles/351132/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы