2012年12月17日月曜日

Play! ~チュートリアルをやってみた中編②

はたしてここで終われるのか…終われなかった…orz
前回からの続き.


3. 開発ワークフロー

直訳でも気にしない. 要は app/controll/Application.java をいじるとこうなるよ! ってお話. 前回の1. でやっちゃった気がしなくも無い(・з・)
1. では他のViewを呼び出していたけど, Stringを直に放り込むことも可能. この場合Content-Typeは text/plain となりなんとも味気ないページがでてきます.
また, コードを変えたときにコンパイルとサーバ再起動を自動でやってくれるのはPlayの利点の一つ. 特にエラーが起きたときや構文エラーがあったときは, ブラウザ上にその箇所を表示してくれる親切設計. ただそのことを,
「As you can see, errors are beautifully displayed directly in your browser.(ご覧の通り, エラーはあなたのブラウザ上に直接美しく表示されます)」
美しくって…. しかもエラーによっては文字化けするし('A`)

4. アプリケーションの準備

直訳でも(ry. conf/routesを編集することで, アクションの振り分けができるよー, ってお話.
また最終行の,
POST    /tasks/:id/delete       controllers.Application.deleteTask(id: Long)
ここで, アクションに引数が持たせられる他,  URL部分に「:id」と入れると, 引数に使ったidをURLに埋め込むことができるよ!(・∀・)といったことも.
当然このconf/routesだけをいじってもアクションのほうを書かないとエラー吐かれるよ, ってことをわざわざ3. で出たブラウザ表示を用いて例示している. 当然ですね('A`)
なのでapp/controller/Application.javaにアクションを書いていきましょう. この時, まだ内容が決まっていないなら,
return TODO
としておくことで, とりあえずコンパイルは通るようになるよ, ということらしい.
ちなみにこのまま走らせると 「501 Not Implemented(未実装)」 が返ります. 便利.
最後はリダイレクトのお話. Viewを通さず, 別のアクションを呼びたいときは,
return redirect(routes.Application.tasks());
と書くことで, 直接conf/routesに飛び, アクションの振り分けから再開できるよ!(・∀・)ってこと.
このときのステータスはちゃんと 「303 See Other(他参照)」 でリダイレクトされる. これまた便利.

5. Taskモデルの準備

直(ry. ようやっとModelの登場. しかしデフォルトではディレクトリは作ってくれないので, まずは app/models ディレクトリを作る必要がある.
ディレクトリを作ったら中に Task.javaを作成. それだけ. ( ゚д゚ )
このあたりで今回では終わらないことを悟り 中編②とか妙なタイトルに変更. どうしてこうなったorz.


6. アプリケーションテンプレート

逆に訳すに訳せない('A`) Todoリストを表示するためのHTMLを作成する…のだが.
なんかやたらすっきりしてる. 2. でもちょっと書いたが, @~というのはPlay!フレームワークが関数のように扱ってくれて, 自動でHTML文を生成してくれる便利なツールとの事. ただし使うためには,
@import helper._
を宣言しておく必要がある.
中でも, @form は重要. この宣言だけで<form>タグを生成してくれる. マジ便利. もちろん例のように引数を放り込むことも可能.
また, 他にもテキストボックスなど<input>タグシリーズを生成する@input等もある. これもまた便利.
チュートリアルにある最後の数行,
@form(routes.Application.newTask()){
  @inputText(taskForm("label"))
<input type="submit" value="Create">
}

この宣言で,
<form action="/tasks" method="POST">
  <dl class=" " id="label_field">
    <dt><label for="label">label</label></dt>
    <dd><input type="text" id="label" name="label" value=""></dd>
  </dl><input type="submit" value="Create">
</form>
とこれくらい作ってくれる. idなんかを追加で指定してやることも可能.
ちなみに生成するHTMLをカスタムすることもできるらしい.
@inputは他にも@inputPasswordなんてのもあるが, ボタンに関してはまだ見つかっていない.
無いのかな…(・ω・`)






次だ…次で終わらせる…('A`)


0 件のコメント:

コメントを投稿

AWS CDKで立てたEC2インスタンスのTimeZoneとかいじりたかった話

EC2を立てることはできたけど、立てたインスタンスは UTCのままだし設定ファイルとかいちいちscpしてくるのはダルい。 当初UserDataでなんとかしようとしたものの、「書く量がヤバいしメンテしにくい」と悩んでいたところ見かけたのが  AWS::CloudFormation:...