1

我正在使用带有 Scala 的 Play Framework 2.0。

所以我有一个针对发布请求的操作。我想对输入数据进行一些验证,如果输入无效,则重定向到其他一些控制器操作(例如返回上一页并告诉用户输入无效)

我的代码看起来像这样:

if ( input.isNotValid )
  Redirect( foo )


// ... more code

Redirect( bar )

所以验证是早期的,之后有几行代码,在操作的最后我重定向到不同的页面。

我的问题是,即使验证失败,页面也不会重定向到 Foo。如果我这样做,则代码有效:

if ( input.isNotValid )
  Redirect( foo )
else
  Redirect( bar )

我是否需要将所有重定向和 Oks 放在操作结束时?

我知道在 Ruby on Rails 中有时会发生这种情况,对此的解决方案是在每次重定向后放置“并返回”。我也必须在 Play Framework 中做些什么吗?

4

2 回答 2

4

重定向不会将控制权返回给调用方法 - 您的代码将继续执行。重新安排您的代码,以便无效数据的重定向是该流的最终表达式,如下所示:

if ( input.isNotValid )
  Redirect( foo )
else {
  // ... more code
  Redirect( bar )
}

此外,这可以通过更清楚地显示可以采用的各种分支来使您的代码更清晰。

于 2012-06-26T01:15:38.687 回答
0

尝试。'return Redirect(foo)' 在您的原始文件中

于 2012-06-26T01:11:45.137 回答