2016-12-07 3 views
0

Ich benutze jpenren des Thymeleaf Spring Data Dialect: https://github.com/jpenren/thymeleaf-spring-data-dialectWie verwende ich Thymelefs # lists.isEmpty mit Spring Data's Page interface?

Nach seinem letzten Rat:

standardmäßig SpringDataDialect Suche in der Anforderung für das Attribut "Seite" oder wenn ein Attribut vom Typ org.springframework .data.domain.Page existiert. Um ein anderes Modell Attribute zu verwenden, verwendet sd: page-Objekt = "$ {attrName}"

ich etwas tun, wie dies in meinem Frühling Controller:

@RequestMapping("search") 
public String search(Model model, @PageableDefault Pageable pageable) { 
    Page<User> users = userRepository.findAll(pageable); 
    model.addAttribute("users", users); 
    return "user/search"; 
} 

und in meiner search.html Ansicht, hier ist ein Auszug:

<table class="table"> 
     <caption class="text-xs-center" th:if="${#lists.isEmpty(users)}">No user found</caption> 
     <thead> 
     <tr> 
      <th>Username</th> 

      (...) 

     <tbody> 
     <tr th:each="user : ${users}"> 
      <td th:text="${user.name}">Username</td> 

Leider funktioniert die ${#lists.isEmpty(users)} nicht. Es funktioniert auf anderen Seiten, wo ich dieses Page<?> nicht verwende.

Also, wie mache ich diesen Test?

+0

Ich bin mir nicht sicher, ob ich die Verbindung bekomme. Sie beziehen sich zuerst auf den Spring Data Thymeleaf-Dialekt, verwenden ihn dann aber nicht. Der Beispielcode zeigt auch eine andere Variable, die im Listenausdruck verwendet wird, nicht "Benutzer". Page hat eine Methode 'getContent()', die eine 'List' zurückgibt, also sollte' page.content' an den Listenausdruck übergeben werden. –

+0

Ich benutze die Paginierung, aber es bringt nichts hier, weil es nur etwas wie ''

'' Auch habe ich den Code, die richtige Variable ist in der Tat '' Benutzer ' '. – maxxyme

+0

Wie Sie gesagt haben, ist die Verwendung von getContent() nützlich: Ich war erfolgreich mit '' th: if = "$ {# lists.isEmpty (users.content)}" ''. – maxxyme

Antwort

2

Es sieht aus wie Thymeleaf #lists erwartet wirklich eine List, die Page eindeutig nicht ist, da es nur Iterable implementiert. Sie können sich auf page.content für den Listeninhalt beziehen.

Da Sie lieber zuerst nach dem Vorhandensein (oder der Abwesenheit) des Inhalts suchen, können Sie Page.hasContent() direkt verwenden, was bedeutet, dass ein th:unless="{adherents.hasContent()} den Trick auch tun sollte.

+0

Würde es Ihnen etwas ausmachen, Ihre Antwort zu bearbeiten und '' user'' als Variablennamen zu verwenden? Beachte, dass ich meinen letzten Kommentar auch nicht oben bearbeiten kann ... kannst du? – maxxyme

+0

Ergebnis: 'Als Ausdruck konnte nicht analysiert werden:" {posts.hasContent()} "' –

Verwandte Themen