私のコントローラーの 1 つで、beforeInterceptor クロージャーにいくつかのエラー チェック コードを書きました。
if (getUser()?.courses?.size() == 0) {
render(view: '/base/errorMessage', model: [errorMessage: "You don't have any courses!"]);
return false;
}
その render 呼び出しは、プログラム全体のエラー ページを表示します。
ただし、false を返すと何も表示されません。true を返すと、エラー ページは正常に表示されますが、アクションは実行されます (レンダリングされませんが、ロジックは実行されます)。これには重複したエラー チェックが必要であり、インターセプターの目的が無効になります。
redirect() 呼び出しは引き続き正常に機能しますが、エラー表示を別のアクションに移動するのは面倒です。/app/courses の代わりに、ユーザーの URL に /app/error/errorMessage が表示され、エラー ページに直接移動できます。次に、そのアクションにメッセージを取得するという問題があります-flash.message? session.var?
より良い方法はありますか?