1

Scala で Play Framework 2.0 を使用しています。

したがって、投稿リクエスト用のアクションがあります。入力データに対して何らかの検証を行いたいのですが、入力が有効でない場合は、他のコントローラー アクションにリダイレクトします (たとえば、前のページに戻って、入力が無効であることをユーザーに伝えます)。

私のコードは次のようになります。

if ( input.isNotValid )
  Redirect( foo )


// ... more code

Redirect( bar )

そのため、検証は早い段階で行われ、その後にコード行があり、アクションの最後で別のページにリダイレクトされます。

私の問題は、検証が失敗した場合でも、ページが Foo にリダイレクトされないことです。代わりにこれを行うと、コードが機能します。

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

すべての Redirect と Oks をアクションの最後に置く必要がありますか?

Ruby on Rails では時々これが発生することを知っています。その解決策は、リダイレクトのたびに「and return」を配置することです。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 に答える