我有一个过滤器执行一些检查并根据检查失败返回false。但是,在它返回false之前,它会呈现在出现此类错误时应向用户显示的错误视图。相反,显示一个空白页面,其中包含错误代码404.请注意,url包含不存在的控制器和操作,所以通常404会有意义但是因为我在这里应用了一个全局过滤器,它被调用并进行渲染调用,我是关注那个没有实现的渲染调用。
答案 0 :(得分:0)
你能分享代码吗?
我猜你试图渲染一些不存在的东西。
以下代码适用于我
def filters = {
before = { Map model ->
...
render (view: '/access-denied')
return false
}
并呈现access-denied.gsp
通常我也不会在这种情况下渲染视图,而是将其重定向到类似下面的内容
before = { Map model ->
...
redirect(uri: '/access-denied')
return false
}
答案 1 :(得分:0)
您可以使用forward在过滤器中渲染视图。 E.g。
all(controller:'*', action:'*') {
before = {
if(requirePost && !"post".equalsIgnoreCase(request.method)) {
response.status = 405
response.setHeader('Access','POST');
forward(controller: 'page', action: 'http405')
return false;
}
}
}
这样URL就不会改变。