[Grails] Criteria (クライテリア)で、総件数(total)と、指定した範囲のレコードの両方を一度に取る

paginate タグとか使って、ページネーションを表現すると、表示する内容と総件数の両方を取る必要がある。

totalCount を使うと一度の検索で、表示したい範囲の情報と総件数がとれる。

max は取得したい件数(表示したい件数)
offset は、ページネーションでずれたページ数。意識しなくても、paginate タグなら、 params.offset に入る。

これで、 searchResults には取得したい内容のデータが入っている。
総件数は
searchResults.totalCount
で取れる。




[Grails (グレイルズ) ] コントローラーで、params にある項目をリストとして扱う

Grails 2.3.4
コントローラで、params の可変項目 xxyyzz を リストで受け取る場合、

controller上で、

とか、

のように扱っていると、うまくいかない時がある。

例えば、以下のように項目が二つあるときは、

xxyyzz は、 [10200, 2300] のリストになるが、

一つの時は、

as List や、 each で無理にリストとして扱おうとすると、
[1,0,2,0,0] となってしまう。
これを回避するには、

とすれば、必ずリストとして値を取れる。
あとは、ループで回すなり、each で扱えばよい。