0

Если выборка меньше 10 фильмов, то пагинатор не показывается

This commit is contained in:
2017-06-24 17:35:33 +03:00
parent 74a61b88e3
commit eb029f1156
4 changed files with 21 additions and 4 deletions

View File

@@ -8,5 +8,6 @@ import java.util.List;
public interface BaseRepository { public interface BaseRepository {
List<CinemaDocument> findByTitle(String title, int page); List<CinemaDocument> findByTitle(String title, int page);
long countByTitle(String title);
void save(CinemaDocument cinemaDocument); void save(CinemaDocument cinemaDocument);
} }

View File

@@ -26,13 +26,22 @@ public class MongoDBRepository implements BaseRepository {
Query query = new Query(); Query query = new Query();
final String regex = String.format(".*%s.*", Pattern.quote(title)); final String regex = String.format(".*%s.*", Pattern.quote(title));
query.addCriteria(Criteria.where("title").regex(regex, "i")); query.addCriteria(Criteria.where("title").regex(regex, "i"));
final int limitPage = 10; final int limitPage = 10; //TODO лимиты надо вывести в общую константу
query.skip(limitPage * (page-1)); query.skip(limitPage * (page-1));
query.limit(limitPage); query.limit(limitPage);
logger.debug("query: {}", query.toString()); logger.debug("query: {}", query.toString());
return mongoOperations.find(query, CinemaDocument.class); return mongoOperations.find(query, CinemaDocument.class);
} }
@Override
public long countByTitle(String title) {
Query query = new Query();
final String regex = String.format(".*%s.*", Pattern.quote(title));
query.addCriteria(Criteria.where("title").regex(regex, "i"));
logger.debug("query: {}", query.toString());
return mongoOperations.count(query, CinemaDocument.class);
}
@Override @Override
public void save(CinemaDocument cinemaDocument) { public void save(CinemaDocument cinemaDocument) {
mongoOperations.save(cinemaDocument); mongoOperations.save(cinemaDocument);

View File

@@ -49,10 +49,15 @@ public class WebAppController {
if (searchText.trim().isEmpty()) { if (searchText.trim().isEmpty()) {
return "redirect:/"; return "redirect:/";
} }
List<CinemaDocument> cinemaDocuments = baseRepository.findByTitle(searchText.trim(), page); searchText = searchText.trim();
long count = baseRepository.countByTitle(searchText);
List<CinemaDocument> cinemaDocuments = baseRepository.findByTitle(searchText, page);
model.addAttribute("cindocs", cinemaDocuments); model.addAttribute("cindocs", cinemaDocuments);
model.addAttribute("searchText", searchText); model.addAttribute("searchText", searchText);
final int limitPage = 10; //TODO лимиты надо вывести в общую константу
if (count > 10) {
model.addAttribute("page", page); model.addAttribute("page", page);
}
return "searchResult"; return "searchResult";
} }

View File

@@ -3,7 +3,7 @@
[#include "search.comp.ftl"] [#include "search.comp.ftl"]
<hr> <hr>
<span class="searchResult"> <div class="searchResult">
[#if cindocs?has_content] [#if cindocs?has_content]
[#list cindocs as cinema] [#list cindocs as cinema]
<div class="panel panel-default"> <div class="panel panel-default">
@@ -24,10 +24,12 @@
</div> </div>
</div> </div>
[/#list] [/#list]
[#if page??]
<ul class="pager"> <ul class="pager">
<li class="previous"><a href="?search=${searchText}&page=${page-1}"><span aria-hidden="true">&larr;</span> Назад</a></li> <li class="previous"><a href="?search=${searchText}&page=${page-1}"><span aria-hidden="true">&larr;</span> Назад</a></li>
<li class="next"><a href="?search=${searchText}&page=${page+1}">Вперед <span aria-hidden="true">&rarr;</span></a></li> <li class="next"><a href="?search=${searchText}&page=${page+1}">Вперед <span aria-hidden="true">&rarr;</span></a></li>
</ul> </ul>
[/#if]
[#else] [#else]
<div style="text-align: center; font-size: 1.5em"> <div style="text-align: center; font-size: 1.5em">
Ничего не найдено Ничего не найдено