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 に答える