2015-06-06 132 views
0

你好,我是新来的playframework,遇到关于表单处理的小问题 。 这是我的看法Playframework动态表单处理

<form action="@routes.Account.changeemail()" method="Post"> 
 
email:<input name ="email"> 
 
<button type="submit" name="action" value="Change_email">save</button> 
 

 
    <br /> 
 
</form> 
 
<form action="@routes.Account.changepassword()" method="Post"> 
 
    
 
    password:<input name ="password"> 
 
    <button type="submit" name="action" value="change_password">save</button> 
 
    
 
</form> 
 
<br />

这里是我的控制器

public static Result changeemail(){ 

final DynamicForm form = Form.form().bindFromRequest(); 
Logger.info(form.get("email")); 
return TODO;} 

public static Result changepassword(){ 
final DynamicForm forms = Form.form().bindFromRequest(); 
Logger.info(forms.get("password")); 
return TODO;} 

这里的路线:

GET /account     controllers.Account.accountview() 
POST /account     controllers.Account.changeemail() 
POST /account     controllers.Account.changepassword() 

的问题是,如果我按Change_email按钮它做对了,但是如果我按密码按钮,它正在执行changeemail操作,即使它应该处理changepasswort操作。我用firefox网络分析检查了它,它似乎发送了正确的操作。

在正向的帮助表示感谢

问候亚历

+0

你能不能张贴路由文件?你报告的结果似乎有点奇怪,可能是那里藏着的东西? –

+0

其中认为对这一问题的途径: GET /帐户\t \t \t controllers.Account.accountview() POST /帐户controllers.Account.changeemail() POST /帐户controllers.Account.changepassword()加入它也是在原发邮件 – Alex

回答

2

的问题来自于你的路线,顺序很重要。您的路由器始终采用执行changeemail()操作的第一个POST /account。对于两种不同的操作,您不能有POST /account。它应该是:

GET /account       controllers.Account.accountview() 
POST /account/change-email    controllers.Account.changeemail() 
POST /account/change-password   controllers.Account.changepassword() 
+0

非常感谢,解决了这个问题。祝贺和美好的一天 – Alex