4

UrlMapingsに「500」エラーのマッピングがあり、カスタムエラーページがレンダリングされます。例外がカスタムtaglib実装で発生した場合、または一部がg:includeに含まれている場合を除いて、正常に機能します。

その場合、エラーページは、問題のあるタグまたはg:includeがあった場所のサラウンドレイアウトの一部としてレンダリングされます。

これは予想される動作であることを理解していますが、部分的にレンダリングされたコンテンツといくつかのエラーページパーツを含むページで終了する代わりに、そのようなエラーを強制して親レイアウトの外にリダイレクトまたはレンダリングする方法はありますか?

4

2 に答える 2

2

私は通常、アプリケーションの外部でこの問題を解決します。本番環境では、通常、Tomcatの前にnginxがあります。これにより、ヘッダーに500 httpコードが含まれるすべてのページがインターセプトされ、静的エラーページが表示されます。

server {
    [..]

    location / {
            proxy_pass        http://localhost:8080/grailsAppName;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header Host $host;
    }

    error_page 500 502 503 504  /500.html;

    location = /500.html {
            root  /var/www/errors-grailsAppName;
    }
 }

このように、サブビューが壊れているか、アクションコード自体が壊れているかは関係ありません。

于 2012-07-08T22:51:28.430 に答える
0

やりたいことは達成できないと思いますが、少なくとも、taglib内のコードをtry / catchで囲み、空の文字列または特定のメッセージでレンダリングすることができます。

于 2012-07-08T17:34:33.087 に答える