質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Play Framework 2

Play Framework 2はPlayのメジャーバージョンです。現代の web アプリケーション開発に必要なコンポーネント及び API を統合した生産性の高い Java と Scala の web アプリケーションフレームワークです。

Q&A

解決済

1回答

631閲覧

PlayFramework Formのpost送信ができないです。

HYu

総合スコア7

Play Framework 2

Play Framework 2はPlayのメジャーバージョンです。現代の web アプリケーション開発に必要なコンポーネント及び API を統合した生産性の高い Java と Scala の web アプリケーションフレームワークです。

0グッド

0クリップ

投稿2017/11/01 02:19

###formのpostメソッド送信ができません。
PlayFramework初心者です。
formのpost通信がしたいのですが、Bad Requestがでてしまいます。
from自体は単純なもので、formクラスは使用していないです。
よろしくお願いします。

###発生している問題・エラーメッセージ

Bad Request For request 'POST /submit' [Missing parameter: name]

###該当のソースコード

HTMl

1<form method="post" action="/submit"> 2 名前:<input type="text" name="name"><br> 3 <input type="submit" value="送信"> 4 <p>@message</p> 5</form>

Java

1 public Result submit(String name) { 2 return ok(result.render(name)); 3 }

routes

1POST /submit controllers.HomeController.submit(name:String)

###試したこと
route

POST /submit/:name controllers.HomeController.submit(name:String)

HTML

<form method="post" action="/submit/:name">

他サイトを参考にして上記にすると、エラーは起こりませんがパラメーターは「:name」となり入力値は無視されてしまいます。

###補足情報
PlayFramework version : 2.5.10
Java : 1.8

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

submitメソッドの引数にパラメータを渡そうとしているのが原因と思われます

このような書き方はGETで使いますが、
POSTではFormFactoryをControllerにimportした上で、DynamicFormや自前のFormクラスを使ってバインドすると良いと思います

DynamicFormの使い方は以下の通りです

routes

POST /submit controllers.HomeController.submit()

HomeController

java

1 2import play.data.DynamicForm; 3import play.data.FormFactory; 4import javax.inject.Inject; 5 6/* 中略 */ 7 8public class HomeController extends Controller { 9 10 @Inject 11 FormFactory formFactory; 12 13 /* 中略 */ 14 15 public Result submit() { 16 DynamicForm form = formFactory.form().bindFromRequest(); 17 String name = form.get("name"); //HTMLにあるinputタグのname属性の値を文字列でgetメソッドに渡します 18 return ok(result.render(name)); 19 } 20 21}

result.scala.html

HTML

1@(message: String) 2 3<form method="post" action="/submit"> 4 名前:<input type="text" name="name"><br> 5 <input type="submit" value="送信"> 6 <p>@message</p> 7</form>

投稿2017/12/24 10:17

sink66

総合スコア88

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HYu

2017/12/27 06:09

ご回答ありがとうございます! やはりFormクラスを使うのが良いのですね。 DynamicFromは使用したことがなかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問