在我的一个控制器中,我在 beforeInterceptor 闭包中编写了一些错误检查代码。
if (getUser()?.courses?.size() == 0) {
render(view: '/base/errorMessage', model: [errorMessage: "You don't have any courses!"]);
return false;
}
该渲染调用显示了一个很好的程序范围的错误页面。
但是,如果我返回 false,则不会显示任何内容!如果我返回 true,则错误页面显示得很好,但无论如何都会执行操作(它不会被渲染,但逻辑仍然会被执行)。这需要重复错误检查,从而破坏了拦截器的目的。
redirect() 调用仍然可以正常工作,但是将错误显示移动到不同的操作会很麻烦。用户将在他们的 URL 中看到 /app/error/errorMessage 而不是 /app/courses,并且可以直接转到错误页面。然后是获取该操作的消息的问题 - flash.message?session.var?
有没有更好的办法?