「Play Framework/メモ(1.2系)」の編集履歴(バックアップ)一覧はこちら

Play Framework/メモ(1.2系)」(2012/09/25 (火) 02:18:44) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

* play framework メモ(1.2系) * CRUDモジュールを使う(有効にする) *** /conf/dependencies.ymlファイルに追加 #highlight(){{ require: - play -> crud }} *** モジュールの有効化 #highlight(){{ play dependencies }} ※別の端末にコピーした時もこの作業が必要です。 *** /conf/routesファイルに追加 #highlight(){{ # CRUD routes * /admin/crud module:crud }} ※パスは自由に変更できます。 *** CRUDコントローラ追加 *** 例 Userモデルのコントローラ #highlight(){{ package controllers.cruds; import models.User; import controllers.CRUD; public class Users extends CRUD { } }} * JPA関係 *** エンティティマネージャーを使う #highlight(){{ // 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(); }} * 静的なファイルのルーティング アプリケーションが、http://example.com/hello/のように、サーバのルートに配置されていない場合、配置されているディレクトリを正しく認識出来ないと画像やCSS等の静的なファイルに正しくリンクを張れなくなってしまう。 *** テンプレートの場合 以下のように、@{'静的なファイルのパス'}とすることで、正しいパスに変換される。 #highlight(){{ <img src="@{'/public/images/hoge.png'}"/> ↓ <img src="/hello/public/images/hoge.png"/> }} @を2つ並べると絶対パスに変換される。 #highlight(){{ <img src="@@{'/public/images/hoge.png'}"/> ↓ <img src="http://example.com/hello/public/images/hoge.png"/> }} *** JAVAの場合 テンプレートのルーティングは簡単だが、JAVA上で簡単にルーティングする方法を見つけられなかった。 とりあえず、以下のように無理やりなルーティングで解決させておく。 ※Application.indexがアプリケーションのルートに設定されていると過程。 #highlight(){{ "<img src=\"" + Router.reverse("Application.index").url + "public/images/hoge.png" + "\"/>" ↓ <img src="/hello/public/images/hoge.png"/> }} 絶対パスを取得する場合 #highlight(){{ 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"/> }} * チートシート(テンプレート) *** コメント #highlight(){{ *{ hogehoge }* }} ** テンプレートタグ *** タグを作成 ファイル名:/app/view/tags/topbar.html #highlight(){{ <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> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="@{Login.logout()}">ログアウト</a> #{/if} #{else} <a href="@{Application.signupForm()}">会員登録</a></br> <a href="@{Login.loginForm()}">ログイン</a> #{/else} </div> }} *** タグを使う #highlight(){{ #{topbar /} }} *** リバースルーティング #highlight(){{ @{Application.index()} アクション @{'/public/images/title.png'} 静的ファイル @{Application.index(title)} パラメータを与える事も出来る @@{Application.index()} @@でフルパス(http://example.com/~) }} application.confに以下の設定を追加すると、フルパス時のURLを指定できる #highlight(){{ %prod.application.baseUrl=https://memo-chapati.dotcloud.com/memo.war/ }} *** パラメータを出力する #highlight(){{ ${memo.title()} }} *** パラメータがnullかもしれない場合 #highlight(){{ ${memo?.title()} }} パラメータの後に?を加えるとヌルポ防止になります。 *** エスケープしない場合 #highlight(){{ ${memo.title().raw()} }} *** フォーマットを指定する #highlight(){{ ${memo.date.format('yyyy/MM/dd')} }}

表示オプション

横に並べて表示:
変化行の前後のみ表示: