2012-07-01から1ヶ月間の記事一覧

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

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

backbone.js モデルのバリデーション

backbone.jsでモデルのバリデーションを行うにはモデルでvalidateメソッドを実装します。 下のSourceにあるサンプルだと1つのエラーで1つずつAlertを表示するような形でしたが、複数の入力フィールドがあるのでまとめてエラーを出したいと思います。 var MyM…

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

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

backbone.js モデル保存後のCallback

Backbone.jsでモデル保存後のcallbackを設定するには、1つ目の引数に保存するプロパティ値を渡して、2番目の引数にsuccessとerrorを渡します。 success、errorはどちらか一方だけでもOKかと思います。 this.model.save( {var1: "test", var2: "hoge"}, { su…

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を後から使うメソッドがあります。 簡略化して書くと下のようなコードです。実…

Jasmine+Sinon.jsを使ってAlertが正しいテキストで表示されることを確認する

confirmでも同じように使えました。 // Spec describe("MyAlertTest", function(){ beforeEach(function(){ setFixtures(sandbox()); $("#sandbox").append("<button id='testBtn' value='test' />"); this.alertSpy = sinon.stub(window, "alert").returns(true); }); //これなしだとTypeError: </button>…

IE9でBackboneアプリが動かない

ChromeやFFで問題なく動作していたBackboneアプリがIE9では動かない。。 デバッグツールを立ち上げるとこんなエラーが出ていました。SCRIPT1028: 識別子、文字列または数がありません。 var ItemView = Backbone.View.extend({ render: function(){ $(this.…

Jasmine+sinon.jsでjQuery.ajaxが呼ばれているかテストする

sinon.spyを使うと$.ajaxが呼ばれているかをテストできます。 このときはBackboneのCollectionでfetchが正しいパラメータで呼び出されているかをテストしてみました。 describe("some ajax test", function(){ beforeEach(function(){ this.ajaxSpy = sinon.…

Jasmine+BackboneでViewのテストをするときにダミーのHTML要素を使う

jasmine-jqueryのsandboxを使うと、テストの間だけ使えるDIV要素を作ってくれます。 各テストの間でちゃんと掃除をしてくれるので、わざわざ削除する必要もありません。 beforeEach(function(){ setFixtures(sandbox()); }); sandbox()を使うとdiv要素にidと…

Jasmineで非同期のリクエスト終了後にテストを実行する

今日はJasmineを使ってBackbone.Viewのテストを書いていました。 サンプルに載っていた通り、非同期リクエストでViewのテンプレートを読み込んでいたのですが、テンプレートの読み込みが終了した時点でテストを実行しようとして、うまくいかずにハマりました…

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…