现在,在Play中,如果我想重新加载当前页面,我必须做类似的事情:
public static Result action(){
if(status==0){
//some actions
return redirect(routes.pathToController())
}else{
return redirect(routes.pathToControllerThatDisplaysCurrentPage())
}
如果我想模拟用户按下刷新页面的效果,是否可以执行以下操作:
public static Result action(){
if(status==0){
//some actions
return redirect(routes.pathToController())
}else{
return redirect(refreshCurrentPage())
}
我想这样做的原因是我不必保存当前参数,只需像以前一样重新加载页面。
答案 0 :(得分:1)
如果我理解你要做什么,听起来,当用户提交表单时,如果该表单有错误,你想要将它们带回那个表单中的数据吗?刷新网页无济于事,他们将丢失所有输入数据。重定向也不是实现这一目标的正确方法。您需要重新呈现原始表单页面 - 您拥有他们提交的所有数据,因此您可以重新呈现它。如果数据中缺少任何内容,则可能需要在隐藏的表单字段中添加该数据。这是Web应用程序的一个非常常见的要求,重新渲染是实现它的方法。使用Play表单API,这非常简单,只需将验证失败的表单传递给呈现它的模板,然后就完成了。
在这里阅读文档:
http://www.playframework.com/documentation/2.2.x/JavaForms
您想要的部分是处理表单失败,基本上您执行以下操作:
if (userForm.hasErrors()) {
return badRequest(views.html.form.render(userForm));
} else {
User user = userForm.get();
return ok("Got user " + user);
}