在我的一個控制器中,我在beforeInterceptor閉包中編寫了一些錯誤檢查代碼。Grails:在beforeInterceptor中呈現頁面
if (getUser()?.courses?.size() == 0) {
render(view: '/base/errorMessage', model: [errorMessage: "You don't have any courses!"]);
return false;
}
該渲染調用顯示一個很好的程序範圍的錯誤頁面。
但是,如果我返回false,則不會顯示任何內容!如果我返回true,那麼錯誤頁面就會顯示出來,但是該操作仍然執行(它不會被渲染,但邏輯仍然會被執行)。這需要重複的錯誤檢查,否則攔截攔截器的目的。
重定向()調用仍然正常工作,但將錯誤顯示移動到不同的操作是凌亂的。用戶可以在他們的URL中看到/ app/error/errorMessage,而不是/ app/courses,並且可以直接進入錯誤頁面。接下來就是將消息傳遞給該操作的問題 - flash.message? session.var?
有沒有更好的方法?
這並沒有真正幫助我 - 我只是想攔截一個控制器並向用戶顯示一條消息。這不是一個實際的例外。 –