Playframework 动态表单处理
Playframework dynamic form handling
大家好,我是游戏框架的新手,运行遇到了一个小问题
关于表格处理。
这是我的观点
<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 networkanalysis 检查了它,它似乎发送了正确的操作。
转发感谢您的帮助
问候亚历克斯
问题出在你的路线上,顺序很重要。您的路由器总是采用第一个执行 changeemail()
操作的 POST /account
。您不能为两个不同的操作设置 POST /account
。应该是:
GET /account controllers.Account.accountview()
POST /account/change-email controllers.Account.changeemail()
POST /account/change-password controllers.Account.changepassword()
大家好,我是游戏框架的新手,运行遇到了一个小问题 关于表格处理。 这是我的观点
<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 networkanalysis 检查了它,它似乎发送了正确的操作。
转发感谢您的帮助
问候亚历克斯
问题出在你的路线上,顺序很重要。您的路由器总是采用第一个执行 changeemail()
操作的 POST /account
。您不能为两个不同的操作设置 POST /account
。应该是:
GET /account controllers.Account.accountview()
POST /account/change-email controllers.Account.changeemail()
POST /account/change-password controllers.Account.changepassword()