PlayFramework-1.2.*

PlayFrameworkのViewでHTMLエスケープをさせない方法

この方法が正しいかどうかはわからないけど一応メモ。 下のような形でHTMLを出力させるメソッドがあったとして… @Entity public class MyModel extends Model { @Transient public final static HashMap typeMap = new HashMap(){{ put(0, "Type1"); put(1, …

Playframework モデルのプロパティのデータ型を指定する

PlayframeworkでモデルにString型のプロパティを追加すると、データ型はMySQLだと自動的にVARCHAR(255)になります。 このままだと255を超える長さの文字列を追加しようとするとPersistenceExceptionになります。PersistenceException occured : org.hibernat…

PlayFramework Listを使ってIN句でqueryをかける

idとtypeでqueryをかけて結果を取得するような場合、bindを使ってListの内容をそのままIN句に使うことができます。 String型のリストなら自動でシングルクォートを付けて、SQLエスケープもやってくれるようです。 List<MyModel> list = new ArrayList(); List<Long> idList </long></mymodel>…

PlayFramework ManyToManyのリレーション

// 親モデル @Entity public class Parent extends Model{ @ManyToMany(mappedBy="parents", cascade=CascadeType.ALL) @OrderBy("birthday") public List<Child> children; } // 子モデル @Entity public class Child extends Model{ @ManyToMany public List<Parent> pare</parent></child>…

http.maxParams

大きめのデータをPOSTで飛ばしているときに、コンソールに警告が出ていました。Number of request parameters xxxx is higher than maximum of 1000, aborting. Can be configured using 'http.maxParams' application.confに次の行を追加すると解決しました…

PlayFrameworkでセッションID、DBのデータが必要なFunctionalTest

たぶんFunctionalTestの使い方が間違ってますが一応書こうと思います。まずセッションIDについて。 開発中のアプリで、セッションにモデルのIDを保存しておくメソッドと、そのIDを後から使うメソッドがあります。 簡略化して書くと下のようなコードです。実…

PlayFramework 別のモデルと関連があるモデルにGsonのtoJsonが使えないとき

Gsonを使うとモデルをそのままJSON形式に変換したい時に、こんな形で一発変換できます。 Gson g = new Gson(); Person p = Person.findById(myId); g.toJson(p); // {"name": "Taro Yamada", "birthday": "1920/06/30"} ただ、Personが別のモデルとManyToOne…

Ajaxリクエストをテスト

PlayのFunctionalTestでAjaxリクエストをテストしてみました。 ここではJSON形式でデータを渡すので、Gsonを使ってHashをJSON形式に直してからPOSTしています。 HashMap dataToSend = new HashMap(); dataToSend.put("key1", "value1"); dataToSend.put("key…

PlayFrameworkでローカルにあるJarを使いたい

こんな形でjarをローカルフォルダに突っ込んで、使用することができます。 こうしておくとJenkinsでも、ビルド前にdependencies --syncすることで、ちゃんと指定したjarを使ってくれます。 jarのファイル名は、artifactのところにあるように「モジュール名-…

PlayFrameworkのtemplate その2

Includeテンプレートの中で別のテンプレートを呼び出すにはincludeを使います。 includeされたテンプレートでは、親テンプレートで使用可能な値を使うことができます。includeする親側での呼び出しは下のような形です。 #{include 'Books/bookDetail.html'} …

PlayFrameworkのtemplate

今日はPlayのテンプレートで3つ発見があったので、そのときのことをメモします。 ソースが手元にないので覚えてる部分から書いていきます。・別のテンプレートをページの一部に読み込む(Railsのpartialみたいな) ・ループの中でインデックスを取得する ・…

PlayFrameworkでTDDのマネをしてみた

自分用の小さな開発案件にPlayを使ってTDDを真似てみようと思いました。 とりあえずModelのテストからと書き始めたところ… //Model @Entity public class Company extends Model{ } //Test public class CompanyTest{ @Test public void testSomething(){ Co…