2

我正在尝试在我的过滤器的视图文件夹中呈现一个 .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
               }
            }
         }
      }
   }
}

问题是即使执行了代码,这个页面也没有被渲染。该页面直接在视图目录上。我做错了什么?

谢谢,

4

2 回答 2

2

我不认为过滤器可以呈现 gsp,但控制器可以。

文档中提供了您想要做的一个完美示例:过滤器

基本上,您在呈现页面的控制器内创建一个动作,过滤器只是重定向到该动作。

案例“全部”:

                 if(!response.containsHeader("AC_MSG")|| !response.containsHeader("AC_STATUS")) {

                    redirect(controller: "someController", action:"someAction")
                    return false
                 }
于 2012-12-03T00:02:31.257 回答
0

制作 ErrorController.groovy 并使用此渲染视图和参数实现操作。在过滤器中仅使用重定向。也删除“return false”语句。

于 2012-12-02T18:58:13.670 回答