写入响应后如何清理线程局部变量?

发布于 2024-10-19 14:58:27 字数 380 浏览 5 评论 0原文

我有一个使用 ThreadLocal 的 Grails 应用程序。

当前 ThreadLocal 填充和清除由过滤器处理(before:填充,after:清除)。

问题是过滤器的 after 调用在模板渲染之前运行,因此我需要的变量过早地全部为空。 是否有一些简单的方法可以在响应完全写入后触发 ThreadLocal 的清除?

一种方法是在填充 ThreadLocal 之前清除它,从而将所有工作留给过滤器之前-呼叫。但我不喜欢在变量不再用于任何用途后让 ThreadLocal“携带”变量,因此需要其他东西。

I have a Grails application that uses ThreadLocal.

Currently ThreadLocal populating and clearing is handled by a filter (before: populates, after: clears).

The problem is that the filter's after-call is run before template is rendered so my needful variables are all nulls prematurely. Is there some simple way to trigger the clearing of ThreadLocals after the response is fully written?

One approach would be to clear the ThreadLocal before populating it, thus leaving all the work for filter's before-call. But I don't like the idea of leaving the ThreadLocal "carrying" the vars after they're no longer used for anything so something else is needed.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一场信仰旅途 2024-10-26 14:58:27

after 在控制器操作完成后调用 - 您希望清理工作在 afterView 中进行,它在视图渲染后调用。

after is called after the controller action finishes - you want the cleanup to be in afterView which is called after the view is rendered.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文