感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Play FrameworkのController側で、テキストボックスからGETリクエストされたパラメータの値を取得して表示してみる。

スポンサーリンク

タイトルが長ったらしくなったが、Play Frameworkを使って、フォームに入力した値を取得してみようというサンプル。
色々と調べまくってやっと表示できたので、サンプルを残しておく。

まずはview側。
本当は@helperなんかを使ったほうがPlayっぽかったんだけど、参考にした本のサンプルは動かなかったため、HTMLをベタで書いた。

views/index.scala.html

@(msg: String)

@import helper._
@import helper.twitterBootstrap._
@main("Sample Page") {

	<h1>Hello!</h1>
	<p>@msg</p>
	<form method="get" action="/submit2">
		名前:<input type="text" name="name" id="name" value="hoge">
		<input type="submit" value="リクエスト">
	</form>

}

こんな感じで、「/submit2」向けにリクエストを飛ばしてみる。
routesの定義はこんな感じ。

GET   /submit                     controllers.Application.submit()
GET   /submit2                     controllers.Application.submit2(name: String)

それっぽいメソッドは2つ用意していて、それが何かというと・・・

package controllers;

import static play.data.Form.*;
import play.data.Form;
import play.mvc.Controller;
import play.mvc.Result;
import views.html.index;

public class Application extends Controller {

	public static Result index() {
		return ok(index.render("何か入れてよ!"));
	}

	public static Result submit() {
		String name = Form.form().bindFromRequest().get("name");
		return ok(index.render("リクエスト受け取った!(引数なしsubmitメソッド)" + name));
	}

	public static Result submit2(String name) {
		Form<SampleForm> f = form(SampleForm.class).bindFromRequest();
		if (!f.hasErrors()) {
			SampleForm data = f.get();

			return ok(index.render("リクエスト受け取った!(引数ありのsubmit2メソッド)" + name));
		} else {
			return badRequest(index.render("ERROR"));
		}
	}

	public static class SampleForm {
		public String name;
	}
}

こんな感じ。
submit()とsubmit2()を用意した。
こいつらは、どっちもパラメータを取得することができる。
ためしに、

http://localhost:9000/submit2?name=test

とリクエストを飛ばすと、

リクエスト受け取った!(引数ありのsubmit2メソッド)test

と表示される。

http://localhost:9000/submit?name=YAHOO!!

とリクエストを飛ばすと、

リクエスト受け取った!(引数なしsubmitメソッド)YAHOO!!

とブラウザに表示される。

ふう、これでなんとかパラメータを取得できたはず・・・。
明日はDBに格納するところをやってみたい。

最も参考になったのは一番下の方の人の回答
http://stackoverflow.com/questions/14843365/get-request-parameter-with-play-framework

Play FrameworkのJavadoc
http://www.playframework.com/documentation/2.1.0/api/java/index.html

Play Frameworkに習熟することで、Scalaとrailsの基礎を身につけたいという気持ちがある。
Play Frameworkを勉強することは、一石三鳥くらいの意味があると思っている。
調べ物も必然的に英語が多くなるしね・・・。笑