我正在尝试将参数POST到Action,并在路线中写道:
# 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]
我做错了什么?
答案 0 :(得分:3)
您的路线不应包含动态部分(名称,密码),因为数据位于正文中而不是网址
答案 1 :(得分:3)
只需将路线更改为以下内容:
POST /login controllers.Application.login(name, password)
通过在路由路径中不包含动态名称(:name和:password),假设变量来自请求(IE:您的html输入)
您收到的错误表明名称和密码没有出现在网址路径中...这是正确的,因为您在路线中指定的路径表明路径应如下所示:
/登录/ MYNAME /输入mypassword
请检查http://www.playframework.org/documentation/2.0.1/JavaRouting并查看名为“号召性用语生成器方法”的部分
答案 2 :(得分:0)
虽然是一个老帖子,但如果有新人提出这个问题。当你使用post时,我们不应该添加参数,如果你确实使用了参数,它也会 GET / login /:name /:password controllers.Application.login(name:String,password:String)
对于post,不要添加参数并将其绑定到控制器内的case类并访问变量。