Ваш запрос очень подозрительный:
ArrayList<HashMap<String, String>> results =
JobData.findByColumnAndValue(searchType, searchTerm);
Сначала вы звоните в службу статически. Это, вероятно, не то, что вы хотите сделать. Читайте о статических методах.
Во-вторых, ваш запрос возвращает список карты. Это, вероятно, слишком сложно для простого запроса. Я настоятельно рекомендую предоставить простой List
для модели. Скорее всего, вы хотите печатать results.size.size
на своей странице, чтобы получить то, что вы хотите, но я бы не рекомендовал такой подход.
Один из способов сделать это более понятным - сделать что-то вроде:
List<JobListing> jobListings =
jobDataService.findByColumnAndValue(searchType, searchTerm);
model.addAttribute("jobListings", jobListings);
Ваш новый компонент JobListing
будет иметь свойства списка вакансий. Взгляните на Project Lombok, чтобы немного облегчить вашу жизнь с bean-компонентами, если ваш проект допускает дополнительную зависимость. В частности, посмотрите на @Data
и @Builder
.
Взгляните на конструктор-инъекцию для вашего jobDataService
. Внедрение ваших услуг позволяет вашему коду становиться намного более адаптируемым по мере роста вашего приложения.
Тогда вы бы просто получили:
Results Found: <span th:text="${#lists.size(jobListings)}" remove="tag">[0]</span>
<table class="job-listing">
<tr th:each="jobListing : ${jobListings}">
<td th:text="${jobListing.id}">[Id]</td>
<td th:text="${jobListing.createdOn}">[Creation Date]</td>
<!-- or whatever your requirements dictate -->
</tr>
</table>
Обратите внимание, что вы также будете создавать новые <table>
на каждой итерации в исходном HTML. Я сомневаюсь, что ты этого хочешь.
Печать размера списка можно найти здесь .
Главный совет, который я также хотел бы написать, - написать свой код следующему программисту, который прочтет его. Используйте имена логических переменных и будьте проще. Это долгая дорога - держись там.