play framework メモ(1.2系)
CRUDモジュールを使う(有効にする)
/conf/dependencies.ymlファイルに追加
モジュールの有効化
※別の端末にコピーした時もこの作業が必要です。
/conf/routesファイルに追加
# CRUD routes
* /admin/crud module:crud
※パスは自由に変更できます。
CRUDコントローラ追加
例 Userモデルのコントローラ
package controllers.cruds;
import models.User;
import controllers.CRUD;
public class Users extends CRUD {
}
JPA関係
エンティティマネージャーを使う
// Categoryクラスと過程
// これだと上手くいかなかった環境によっては上手く行く?
Query query = JPA.em().createQuery("select * from Category ");
// 全カラムを取得する場合、List<モデル>で受け取れる
Query query = JPA.em().createQuery("from Category "); // OK
List<Category> list = query.getResultList();
// 一行だけの場合、getSingleResultでモデルのまま取得できる
Category category = query.getSingleResult();
// 単一カラムの場合Objectで受け取る
// 実際はLongやStringなどカラムや戻り値に応じた型が入っている
Query query = JPA.em().createQuery("select max(id1) from Category ");
Object obj = query.getSingleResult();
// 複数カラムの場合Objectの配列で受け取る
Query query = JPA.em().createQuery("select id1, name from Category ");
Object[] objs = (Object[])query.getSingleResult();
List<Object[]> list = (Object[])query.getResultList();
静的なファイルのルーティング
テンプレートの場合
以下のように、@{'静的なファイルのパス'}とすることで、正しいパスに変換される。
<img src="@{'/public/images/hoge.png'}"/>
↓
<img src="/hello/public/images/hoge.png"/>
@を2つ並べると絶対パスに変換される。
<img src="@@{'/public/images/hoge.png'}"/>
↓
<img src="http://example.com/hello/public/images/hoge.png"/>
JAVAの場合
テンプレートのルーティングは簡単だが、JAVA上で簡単にルーティングする方法を見つけられなかった。
とりあえず、以下のように無理やりなルーティングで解決させておく。
※Application.indexがアプリケーションのルートに設定されていると過程。
"<img src=\"" + Router.reverse("Application.index").url + "public/images/hoge.png" + "\"/>"
↓
<img src="/hello/public/images/hoge.png"/>
絶対パスを取得する場合
ActionDefinition ad = Router.reverse("Application.index");
ad.absolute();
"<img src=\"" + ad.url + "public/images/hoge.png" + "\"/>"
↓
<img src="http://example.com/hello/public/images/hoge.png"/>
チートシート(テンプレート)
コメント
テンプレートタグ
タグを作成
ファイル名:/app/view/tags/topbar.html
<div style="float: left; width: 500px; height: 40px;">
<a href="@{Application.index()}">
<div style="font-size: 300%;line-height: 100%;">MoEメモ</div>
</a>
</div>
<div style="float: left;">
#{if session.get("loginUserId")}
<a href="@{Memos.memoForm()}">マイページ</a>
<a href="@{Login.logout()}">ログアウト</a>
#{/if}
#{else}
<a href="@{Application.signupForm()}">会員登録</a></br>
<a href="@{Login.loginForm()}">ログイン</a>
#{/else}
</div>
タグを使う
リバースルーティング
@{Application.index()} アクション
@{'/public/images/title.png'} 静的ファイル
@{Application.index(title)} パラメータを与える事も出来る
@@{Application.index()} @@でフルパス(http://example.com/~)
application.confに以下の設定を追加すると、フルパス時のURLを指定できる
%prod.application.baseUrl=https://memo-chapati.dotcloud.com/memo.war/
パラメータを出力する
パラメータがnullかもしれない場合
パラメータの後に?を加えるとヌルポ防止になります。
エスケープしない場合
フォーマットを指定する
${memo.date.format('yyyy/MM/dd')}
最終更新:2012年09月25日 02:18