2012-01-01から1年間の記事一覧

enchant.js + play2.0 + CoffeeScript

ちょっと気になって、enchant.jsを調べ始めた。ExtJSもそうだけど、結局クライアント側のソースがJavaScriptだけ記述すれば良いのであれば、 JavaScriptを呼び出すだけのHTMLって余計というかいらないんだよね。ということで、JavaScriptだけ指定して、実行…

sbtプラグインを追加

sbt でeclipseコマンドを使えるようにする ・project/plugins.sbtに追加 addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.0.0")・eclipsifyコマンドとどう違うのかは永遠の謎。

Jsonを返却する その3

いちいちJSON変換クラスなんか作っていられるか!!とお怒りの方に。 Gsonで変換してしまいましょう。・project/Build.scalaにGsonの追加 val appDependencies = Seq( // Add your project dependencies here, "com.google.code.gson" % "gson" % "1.7.1" )…

Jsonを返却する その2.1

・配列、リストもOK def sample3 = Action { implicit request => val obj = Array(ResultData("hoge","123-4567",17),ResultData("fuga","123-4567",17)) Ok(toJson(obj)) }・結果 [{"name":"hoge","zip":"123-4567","age":17},{"name":"fuga","zip":"123-4…

Jsonを返却する その2

Play1.Xならcase classはすんなり返せていたのに、Play2.0だとちとメンドクサイ。 こちらを参考にしたが、うまく動かなかったので、 trait Protocolではなくobject Protocolにしたところ、動作できました。・case classと変換クラス package modelsimport pl…

Jsonを返却する

・toJsonってどこ?→ play.api.libs.json.Json import play.api.libs.json.Json._ def sample3 = Action { implicit request => Ok(toJson( Map("name"->"hoge","zip"->"123-4567","age"->"17") )) }

extjsを組み込む

とりたてて難しい話ではないけれど、main.scala.htmlをコピって、extjsをインクルードする行を追加した extjsmain.scala.htmlを用意して、テンプレートからはextjsmain()を呼ぶように変更。・extjsmain.scala.html @(title: String)(content: Html)<html> <head> <title>@title</title> <meta charset="UTF-8" /> </meta></head></html>

テンプレートにコントローラを渡す

MVC嫌いなので、テンプレートにコントローラを渡して、コントーラのメソッドを呼び出します(笑)・routes GET /sample2 controllers.Sample.sample2・Sample.scala def sample2 = Action { implicit request => val obj = controllers.Sample Ok(views.html.S…

汎用API的な何か

Play2.0のroutesの設定は以前よりもだいぶ厳格になっているので、以下のような記述はできないみたい。 /{contoller}/api/{method} {contoller}.{method} Play1.xで作っていたアプリは、この記述でいろいろなAPI定義していたので、Play2.0でも似たような感じ…

テンプレートにrequestオブジェクトを渡す

groovyテンプレートって今思うと楽だったんだなと痛感。・テンプレート側 @(title:String)(implicit request: play.api.mvc.Request[AnyContent])・コントローラ側 def mainmenu = Action { implicit request => Ok(views.html.mainmenu("")) }implicitって…

コントローラでRequestオブジェクトからパラメータを取り出す

以前(1.2.x)のよりはだいぶ書き方が楽になってますね。 同名のパラメータが複数あった場合?を想定しているので、 queryStringがMap[String,Seq[String]] となってますね。 ここだけちょっとメンドクサイけど、しょうがないね。 def mainmenu = Action { req…

動的にテンプレートを変更する

もっとうまいやり方があるんだろうけど、今の私にはコレが限界…・conf/routesに追加。:pに表示させたいページ名を指定する GET /route/:p controllers.Application.route(p:String)・Application.routeメソッドを追加 def route(p:String) = Action { val pa…

viewsフォルダの下にフォルダを作って、そこにテンプレートを配置

・views/Sample/sample.scala.htmlを配置して、コントローラからテンプレートを呼び出す def sample = Action { Ok(views.html.Sample.sample("Sample")) }Eclipse上で修正しても最初はエラー表示となるので、一回Play上でテンプレートをコンパイルさせてお…

appディレクトリ直下に適当なパッケージを作成して、Scalaクラスを作成

・コントローラ以外のScalaソースを作ってコンパイルしてくれるか実験 とくに、問題なくコンパイル&コントローラからの呼び出しはできました。 まあ、当たり前か。

Hello Play2.0

・conf/routeに追加 Play1.X系のように*を指定してみたところこれには対応できないっぽい。 指定できるのはGET/POST/PUT/DELETE/HEADだそうです。 GET /mainmenu controllers.Application.mainmenu・Application.scalaにmainmenuメソッドを追加 def mainmenu…

Play2.0 + Eclipse

・まずはPJ作成 play new 新規PJ名・playコマンドでPJインスタンス?を起動 cd 新規PJ名 play ・とりあえず起動 [新規PJ名] $ runブラウザでlocalhost:9000にアクセス。 ctrl-d で停止。 サーバーの起動ポートを変更するには、 conf/application.confかなと…

Play2.0日記

今週はPlay2.0の勉強のため会社を1週間お休みしているところ(半分嘘)メモがてら自分の調べたことをつらつらと書いていこうかと思います。