2013年9月27日金曜日

Play Frameworkでのルーティング設定

Play Frameworkでページャーを実装したい場合ですが、このようにルーティングを設定します。



GET     /detail/:categoryId/:id                           controllers.ItemDetail.index(categoryId:Long, id:Long, page: Integer ?= 1)
routesにルーティングの設定を書きますが、その際に変数のデフォルト値を設定することが出来ます。例えば引数のpageが未指定だった場合にはページ番号1として内部の処理が行われます。

例えばテンプレート内で生成されたURLが

https://github.com/YoshiteruIwasaki/NegativePositieAnalyzerForJa/blob/master/app/views/category.scala.html

<a class="btn btn-default" href="detail/@{category.categoryId}/@{bean.getItem.itemId}">
で生成されているような
/detail/1/2
のようになった場合にはPlay Frameworkの内部では以下のように変換がされます。
/detail/1/2?page=1

Controller側ではどのように受け取られるかといいますと、
https://github.com/YoshiteruIwasaki/NegativePositieAnalyzerForJa/blob/master/app/controllers/ItemDetail.java

public static Result index(Long categoryId, Long itemId, Integer page) {
のような引数にそれぞれの値がセットされるようになります。
2ページ目以降は
https://github.com/YoshiteruIwasaki/NegativePositieAnalyzerForJa/blob/master/app/views/detail.scala.html
テンプレート内で以下の様なリンクを生成することで

<a href="@routes.ItemDetail.index(bean.getItem.categoryId, bean.getItem.itemId, currentPage - 1)">

/detail/1/2?page=2
のURLが生成されるようになります。

/detail/1/2/3のようにページ番号もスラッシュ区切りにするようなURLのパターンを変える方法はよくわかりませんでした。



0 件のコメント:

コメントを投稿