Play フレームワーク (バージョン 1.x) のページネーション モジュールについて質問があります。ページごとに 1 つのオブジェクトのみを表示するようにページネーションを設定し、コントローラーでその他のカスタマイズされた設定をいくつか行いました。
import java.util.ArrayList;
import java.util.List;
import play.modules.paginate.ValuePaginator;
import play.mvc.Controller;
public class Application extends Controller {
public static void index() {
List<String> strings = new ArrayList<String>();
strings.add("Kalle");
strings.add("Karin");
strings.add("Dixie");
strings.add("Edvin");
strings.add("Gustav");
strings.add("Axel");
int pos = 0;
for(String str : strings){
if(str.equals("Axel")){
pos += strings.indexOf(str);
break;
}
}
ValuePaginator namePaginator = new ValuePaginator(strings);
namePaginator.setPageSize(1);
namePaginator.setBoundaryControlsEnabled(false);
namePaginator.setPagesDisplayed(0);
renderArgs.put("pos", pos);
renderArgs.put("namePaginator", namePaginator);
render();
}
そしてテンプレートで:
#{extends 'main.html' /}
#{set title:'Home' /}
*{#{welcome /}}*
${pos}
#{paginate.controls items:namePaginator /}
#{paginate.list items:namePaginator, as:'name'}
${name}
#{/paginate.list}
*{#{list items:strings[pos], as:'string'}
${string}
#{/list}}*
さて、テンプレートの最後の部分に見られるように、通常の groovy リスト タグを使用したコメント部分があります。実際のリストがあるので、指定された位置 "pos" からリストを強制的に開始できます。ただし、ページネーションを使用する場合は不可能です。「items:namePaginator」の場合、それは基になるリストの単なる名前プレースホルダーであり、実際には反復可能ではありません。ラップされたリスト内の指定された位置からページネーションを開始する方法はありますか?
どうもありがとう !