我正在尝试从我的过滤器中在视图文件夹中呈现.GSP视图。以下代码显示:
def filters = {
all(controller:'*', action:'*') {
afterView = { Exception e ->
if (controllerName) {
//some code here
if (annotation!=null) {
switch(response.format){
case 'all':
if(!response.containsHeader("AC_MSG")|| !response.containsHeader("AC_STATUS")){
render(view: "/internalerror", model: [controller: controllerName,action:currentAction,
message:"Response doesn't contain required headers AC_MSG or AC_STATUS. Either add the required headers or use json format.",
example:"Add the following response headers: AC_MSG:response message , AC_STATUS: false or true"
])
return false
}
break
default:
render status: 406
break
}
}
}
}
}
}
问题是即使执行代码,也不会呈现此页面。该页面直接位于视图目录中。我做错了什么?
谢谢,
答案 0 :(得分:2)
我认为过滤器不能渲染gsp,但控制器可以。
文档中提供了您想要做的完美示例:filters
基本上,您在呈现页面的控制器内创建一个操作,过滤器只是重定向到操作。
案例'all':
if(!response.containsHeader("AC_MSG")|| !response.containsHeader("AC_STATUS")) {
redirect(controller: "someController", action:"someAction")
return false
}
答案 1 :(得分:0)
制作ErrorController.groovy并使用此渲染视图和参数实现操作。 在过滤器中仅使用重定向。删除'return false'语句。