これが意図したとおりに機能していないかどうかわかりませんが、私は混乱しています。アクションチェインがリダイレクトされないController.await(int millis)
私がしたいのは、非同期にアクションを遅らせることです。await(int millis)
と私は友達になれるようです。
はここで何が起こるかです:Application.something
にPOSTを送信フォームを表示Application.index
1.。
アプリ/コントローラ/ Application.java
public static void index() {
render();
}
アプリ/ビュー/アプリケーション/ index.htmlを
#{form @Application.something()}
<input type="submit">
#{/form}
2.Application.something
はその事を行い、次にindex
にチェーンされます。
アプリ/コントローラ/ Application.java
public static void something() {
await(500);
// Here be business
index();
}
3. Playがアプリケーションエラーを発生させます:を "テンプレートアプリケーション/ something.htmlは存在しません"。
のでApplication.something
での実行が中断された後render()
がApplication.index
に呼び出されたときに/それはもちろん存在しないApplication.something
のテンプレートを、レンダリングしようと再開しました。
await(500)
を削除すると、すべて正常に機能します(302が発行され、index
が正常にレンダリングされます)。
私は
redirect("/");
でリダイレクトを強制し、私はしたいが、これは醜い感じている結果を得ることができます。
私はまた、右await
後に手動で
request.action = "Application.index";
を設定し、意図したとおりにApplication.index
作品(Controller.template()
作品で、実際、魔法)でレンダリングすることができます。
だから基本的に、すべてOKだと私はawait
ではなく、メソッド呼び出しの後に文字列を使用して一緒に暮らすことを余儀なくしています、または何かが少しオフになっていますか?
乾杯、 Tobias。
回答をお寄せいただきありがとうございます。あなたの説明が継続を使用していない1.2より前の状態を待っているように聞こえますが。私は1.2の後に、要求全体を再実行しないことが待たれていたと思った。 :o – Tobias