5

ActionにパラメーターをPOSTしようとしていますが、ルートに次のように記述しています。

# Home page
GET    /                         controllers.Application.index()

POST   /login/name:/password:    controllers.Application.login(name, password)

そして私には行動があります

public static Result login(String name, String password) {
    return ok(name + " "  + password);
}

私のフォームは

<form action="/login" method="post">

    <input name="name" type="text" id="name">
    <input name="password" type="password" id="password">
    <input type="submit" value="Login">

</form>

そしてそれは機能しません

ご要望に応じて'POST /login' [Missing parameter: name]

私は何が間違っているのですか?

4

3 に答える 3

3

データはURLではなく本文にあるため、ルートに動的な部分(名前、パスワード)を含めることはできません。

于 2012-06-13T04:37:19.723 に答える
3

ルートを次のように変更するだけです。

POST   /login    controllers.Application.login(name, password)

ルーティングパスに動的な名前(:nameと:password)を含めないことにより、変数はリクエストからのものであると想定されます(つまり、html入力)

表示されるエラーは、名前とパスワードがURLパスに表示されないことを示しています...ルートで指定したパスは、パスが次のようになっていることを示しているため、これは正しいです。

/ login / myname / mypassword

http://www.playframework.org/documentation/2.0.1/JavaRoutingを確認し、「Calltoactiongeneratorメソッド」というセクションを確認してください。

于 2012-09-13T20:07:00.740 に答える
0

古い投稿ですが、新しい人がいれば質問になります。postを使用している場合は、パラメーターを追加しないでください。パラメーターを使用した場合も、GET / login /:name /:password controllers.Application.login(name:String、password:String)になります。

postの場合、パラメーターを追加してコントローラー内のケースクラスにバインドし、変数にアクセスしないでください。

于 2018-04-05T07:15:01.743 に答える