2016-12-07 39 views
0

私はjpenrenのThymeleaf春データ方言を使用します。彼の最後のアドバイスに従いhttps://github.com/jpenren/thymeleaf-spring-data-dialectSpring DataのPageインターフェースでThymeleafの#lists.isEmptyを使用するにはどうすればいいですか?

属性 「ページ」のリクエストのデフォルトのSpringDataDialect検索するか、もしタイプ org.springframeworkの一つの属性.data.domain.Pageが存在します。別のモデル 属性を使用するには、SDを使用する:ページオブジェクト= "$ {attrNameで}"

は、私は私の春のコントローラでは、このような何かを:

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

と私のsearch.htmlビューで、ここです抜粋:

<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> 

残念ながら${#lists.isEmpty(users)}は機能しません。これは私がこのPage<?>を利用しない他のページでも動作します。

このテストを行うにはどうすればよいですか?

+0

接続が不明です。最初にSpring Data Thymeleaf方言を参照してから使用しないでください。サンプルコードでは、リスト式で使用されている別の変数も表示され、 'users'では表示されません。ページに 'List'を返す' getContent() 'メソッドがあるので、' page.content'をリスト式に渡すとそのトリックを行うべきです。 –

+0

ページネーションを使用していますが、ここでは何も表示されません。「

'' また、コードを修正しました。 '。 – maxxyme

+0

あなたが言ったように、getContent()を使うと便利です: '' th:if = "$ {#lists.isEmpty(users.content)}" ''で成功しました。 – maxxyme

答えて

2

Thymeleafの#listsが実際にListを期待しているようです。Pageは明らかにそうではないので、Iterableしか実装していません。リストの内容については、page.contentを参照してください。

最初にコンテンツの有無を確認する場合は、Page.hasContent()を直接使用することができます。つまり、th:unless="{adherents.hasContent()}も同様です。

+0

答えを編集して、変数名として '' users''を使用してもよろしいですか?上記の最後のコメントも編集できないことに注意してください...できますか? – maxxyme

+0

結果: '式として解析できませんでした:" {posts.hasContent()} " –

関連する問題