これが意図したとおりに機能しないかどうかはわかりませんが、私が混乱しているだけです。
私がやりたいのは、非同期にアクションを遅らせることであり、await(int millis)
友達になれそうです。
何が起こるかは次のとおりです。
1. Application.index
に POST を送信するフォームを表示しますApplication.something
。
アプリ/コントローラー/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 でアプリケーション エラーが発生します: 「テンプレート Application/something.html が存在しません」。
したがって、での実行が一時停止/再開された後にrender()
が呼び出されると、 のテンプレートをレンダリングしようとしますが、もちろん存在しません。Application.index
Application.something
Application.something
すべてを削除するとawait(500)
、問題なく動作します (302 が発行index
され、期待どおりにレンダリングされます)。
私はリダイレクトを強制することができます
redirect("/");
私が望む結果を得ることができますが、これは醜いです。
設定もできます
request.action = "Application.index";
の直後に手動でawait
レンダリングし、意図したとおりに機能しApplication.index
ます(実際には魔法が機能します)。Controller.template()
await
基本的に、すべて問題なく、メソッド呼び出しではなく文字列を使用することを余儀なくされていますか、それとも少しずれていますか?
乾杯、トバイアス。