播放框架-使用查询字符串重定向

时间:2019-05-20 22:03:44

标签: redirect playframework query-string

我正在使用play Framework 2.7.x

我在controller.list()上有一个视图的公式编制器,我们称之为“索引”。单击“发送”后,它将打开controller.add(),在其中执行一些操作,然后重定向回controller.list()。如果公式器中有错误(必填字段为空),我需要将queryString发送到controller.add()并也重定向到controller.list()

问题在于,如果我做的只是传递请求之类的事情,就会收到一个错误,提示无法添加参数。

public Result list(Http.Request request)
{
  // .... stuff with foo, while foo is an Form<foo> Object
  // ... foo.bindFromRequest(request)
  ok(views.html.index.render(foo))
}

public Result add(Http.Request request)
{
  // not allowed to add request as an argument. only empty is allowed. 
  return Results.redirect(controllers.routes.Controller.list(request));
} 

我只想重定向Form对象,这样我就可以处理controller.list()中的错误,而不必为controller.add()生成额外的视图。如果我在controller.list()内执行所有操作,则此代码不会出现问题,但我喜欢使用controller.add()方法。

可以吗?除了手动传递每个querystring key and value

1 个答案:

答案 0 :(得分:0)

昨天半天搜索之后,我发现今天有些有趣。

  1. 您不允许在=中使用默认参数。您必须在?=内使用routes的可选默认参数!!!!!!!!

  2. 您可以实现QueryStringBindable,因此绑定查询字符串要容易一些。但是您仍然必须“手动”绑定它们。