@Starvings

Как правильно вывести подблок с данными на странице?

На страницу вывожу информацию о сотруднике (trackables) - работает без проблем. Решил добавить доп.информацию для каждого сотрудника по его отпуску, но отпуска выводятся все разом и для каждого сотрудника. Мне же надо выводить в "карточке" сотрудника только его отпуски. В таблице с перс.данными и таблице отпусков имеются ID сотрудника, но не знаю, как на них завязаться и правильно ли это в данном случае...

Контроллер:

@GetMapping("/lists")
    public String list(Model model) throws Exception {
        Iterable<Trackable> trackables = trackableRepository.findAll();
        model.addAttribute("trackables", trackables);

        Iterable<DeviationsTrackable> deviationsTrackables = deviationsTrackableRepository.findAll();
        model.addAttribute("deviationsTrackables", deviationsTrackables);

        return "lists";
    }


Страница:
<div th:each="el : ${trackables}" class="alert alert-info mt-2">
    <h4 th:text="'ФИО: ' + ${el.Trackable_short_name}"></h4>
    <h4 th:text="'День рождения: ' +  ${el.Trackable_day_born}"></h4>
    <h4 th:text="'Месяц рождения: ' + ${el.Trackable_month_born}"></h4>
        <img th:src="'data:image/jpg;base64,'+${el.Trackable_photo}" alt="Фото пользователя" width="140" height="200" />
<!--         Инфо об отпуске-->
        <div th:each="el : ${deviationsTrackables}" class="alert alert-info mt-2">
            <h3>Отпуск</h3>
            <h4 th:text="'Начало: ' +  ${el.Date_Begin} + ' окончание: ' +  ${el.Date_End}"></h4>
        </div>
<!--         Инфо об отпуске-->
        <form th:action="'/lists/delete/' + ${el.Trackable_id}" method="post">
            <button th:href="'/lists/delete/' + ${el.Trackable_id}" class="btn btn-danger">Delete</button>
        </form>
        <hr width="50%" size="2">
</div>


Условно, должно быть так:

  • ФИО:
  • День рождения:
  • Месяц рождения:
  • Фото:
  • Отпуск 1
  • Отпуск 2
  • Отпуск N

и так для каждого найденного сотрудника.
  • Вопрос задан
  • 32 просмотра
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день.
Можно по-разному реализовать.
1) Заранее подготовить некий DTО, в котором заранее будут данные пользователя и его отпуски. Соответственно, останется просто итерировать по этому List<DTO>
2) Если идти, по структуре, как сейчас, то есть персональные данные и данные об отпусках добавляются во вью отдельно, то нужно сделать проверку на ID пользователя.
Условно говоря, th:if="${el.Trackable_ID == el.PERSON_ID}"
Я просто не знаю, как ваши поля называются. Т.е. взять ID текущего элемента из trackables и сравнить его с ID человека в deviationsTrackables
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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