うーん、どうも仕様らしいので対応せざるを得ないですね。
下記のようにGETで指定した場合はアクションメソッドのパラメーターにパラメータクエリがマッピングされるのですが、これをPOSTにするとエラーになります。
[sourcecode language="scala"]
// Routes GET /foo/bar controllers.Foo.bar(a:String, b:String, c:Int=0)
// この場合は正常に出力される def bar(a:String, b:String, c:Int) = Action{ Ok("bar:" + a + " b:" + b + " c:" + c.toString) } [/sourcecode]
上記についてRoutesファイルのGETをPOSTへ変更するとエラーになります。
[sourcecode language="scala"]
// Routes POST /foo/bar controllers.Foo.bar(a:String, b:String, c:Int=0)
// この場合は[Missing parameter: a]が表示される def bar(a:String, b:String, c:Int) = Action{ Ok("bar:" + a + " b:" + b + " c:" + c.toString) } [/sourcecode]
最初は当たり前のようにPOSTでパラメータを渡そうとしてうまくいかずいろいろと調べたのですが、結局のところ仕様としてPOSTの場合はアクションメソッドにパラメータを定義してはいけないようです。
play-framework ›[2.0] Form submission not working for POST but ok for GET method
では、どうすればいいかというとReqest#bodyを利用してごにょごにょすることになります。 この辺は、こちらの書籍がわかりやすく書いてありますね。
※Play20についても記載されているので、とっかかりにはよいと思います。