LoginSignup
4
3

More than 5 years have passed since last update.

Play Framework(Scala)で、POSTされたデータを直接requestから取得する

Posted at

概要

以前に私の方で投稿したPlay Framework 2.6(Scala)でFormの処理を作ってみたでは、Formオブジェクトを使ってPOSTのデータを取得していましたが、reuqestから直接POSTされたデータを取得する方法を紹介します。

対応方法

How to get payload from a POST in Play 2.0で紹介されている通り、requestのbodyから「asFormUrlEncoded」を使うことで取得できます。JavaでのサンプルはHyuさんのPlayFrameworkでのリクエストパラメーターの受け取り方でも紹介されています。

サンプルコード

Formオブジェクトを使わない方法で、POSTされたデータを取得するScalaのサンプルソースを記載します。

sample.scala.html
@import helper._
@main("サンプル"){
    <font size=5>■サンプル画面</font><br/>
    @helper.form( action = helper.CSRF(routes.SampleController.sampleAction) ){
                          <input type = "hidden" name = "idParam" value="test" />
                          <input type = "submit" value="送信する">
                       }
}
SampleController.scala
package controllers

import javax.inject._
import play.api._
import play.api.mvc._
import play.api.data._
import play.api.i18n.I18nSupport
import play.api.i18n._

@Singleton
class SampleController @Inject()(cc: ControllerComponents ) extends AbstractController(cc) with I18nSupport {

  def sampleAction() = Action { implicit request: Request[AnyContent] =>
    // リクエストから直接POSTされたデータ取得
    val idParam = request.body.asFormUrlEncoded.get("idParam")(0)
    Redirect("./test")
  }  
}
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3