2015-06-06 59 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