こいつを回避するには先に
set _JAVA_OPTIONS="-Dfile.encoding=SJIS"
と打っておいてやるといいらしい.
ぶっちゃけよくわからないけど('A`)
参考
set _JAVA_OPTIONS="-Dfile.encoding=SJIS"
import play.data.*が必要とのこと. しかし例ではいきなり必要な部分だけimportしてるし('A`)
Form<Task> taskForm = form(Task.class);を宣言. これにより, ビューとコントローラの間でのデータのやり取りができるほか, 制約を簡単に加えることができる.
@Required public String label;としてやるだけで, やれデータが入っているかー, なんてif文とか書かなくて済むのである.
return ok(views.html.index.render(Task.all(), taskForm));Task.all()はstaticな関数, Taskのリストを返す. これとFormを投げて準備完了.
public static Result newTask() { Form<Task> filledForm = taskForm.bindFromRequest(); if(filledForm.hasErrors()) { return badRequest(views.html.index.render(Task.all(), filledForm)); } else { Task.create(filledForm.get()); return redirect(routes.Application.task()); } }さらっと書かれていてコピペしてスルーしてしまいそうなところだが, 実はイロイロ大事な部分が含まれているという罠. チュートリアル汚い.
POST /tasks/:id/delete controllers.Application.deleteTask(id: Long)ここで, アクションに引数が持たせられる他, URL部分に「:id」と入れると, 引数に使ったidをURLに埋め込むことができるよ!(・∀・)といったことも.
return TODOとしておくことで, とりあえずコンパイルは通るようになるよ, ということらしい.
return redirect(routes.Application.tasks());と書くことで, 直接conf/routesに飛び, アクションの振り分けから再開できるよ!(・∀・)ってこと.
@import helper._を宣言しておく必要がある.
@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なんかを追加で指定してやることも可能.
GET / controllers.Application.index()
public static Result index() { return ok(index.render("Your new application is ready.")); }このindex(), これがちょうど先ほどroutesファイルに入ってた右のあいつにあたる.
GET / controllers.Hoge.index()になるはず.
@(message: String) @main("Welcome to Play 2.0") { @play20.welcome(message) }
@(message: String)いきなりわけがわからないが, なにやら変数の宣言にも見えなくは無いか.
@main("Welcome to Play 2.0") { @play20.welcome(message) }
@play20.welcome(message)
@(title: String)(content: Html) <!DOCTYPE html> <html> <head> <title>@title</title> <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")"> <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")"> <script src="@routes.Assets.at("javascripts/jquery-1.7.1.min.js")" type="text/javascript"></script> </head> <body> @content </body> </html>
play help
play new アプリケーション名名前はお好きに. これでコマンドプロンプトを開いた場所にディレクトリを作成する準備が整う. なので別の場所で作りたいならそこでコマンドプロンプトを開きましょう.
cd 作ったディレクトリ名で移動. 移動できたらとりあえず
playと入力
runこれでPlayがサーバの役割も果たしてくれる(らしい)
exitこれでPlayも終了できる.
play runと打つと直接サーバがrunします. サーバを止めるときも一緒にPlayも止まります.
EC2を立てることはできたけど、立てたインスタンスは UTCのままだし設定ファイルとかいちいちscpしてくるのはダルい。 当初UserDataでなんとかしようとしたものの、「書く量がヤバいしメンテしにくい」と悩んでいたところ見かけたのが AWS::CloudFormation:...