如何使用play框架刷新当前页面?

时间:2014-01-10 20:48:28

标签: playframework

现在,在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())
}

我想这样做的原因是我不必保存当前参数,只需像以前一样重新加载页面。

1 个答案:

答案 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);
}