我正在尝试在我的应用程序中发送邮件,当我尝试它时,它显示“您不能在非请求渲染操作中使用 session ” “这是完整的堆栈跟踪:
java.lang.UnsupportedOperationException:您无法使用 session 在非请求渲染操作中
at grails.gsp.PageRenderer$PageRenderRequest.getSession(PageRenderer.groovy:211) at D__workspace_mks_trunk_grails_app_views_promotion__offerTag_gsp.run(_offerTag.gsp:1) at D__workspace_mks_trunk_grails_app_views_general__courseNewsletter_course_gsp.run(_courseNewsletter.course.gsp:17) at D__workspace_mks_trunk_grails_app_views_general_courseNewsletter_gsp$_run_closure2.doCall(courseNewsletter.gsp:145) at D__workspace_mks_trunk_grails_app_views_general_courseNewsletter_gsp.run(courseNewsletter.gsp:200) at grails.gsp.PageRenderer.renderViewToWriter(PageRenderer.groovy:140) at grails.gsp.PageRenderer.render(PageRenderer.groovy:83) at EmailerService.sendEmails(EmailerService.groovy:78) at com.mks.email.NewsletterController$_closure9.doCall(NewsletterController.groovy:201) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) -->
还有 _offerTag 模板,我在那里使用 session 。在那里使用有什么问题吗?这也是几天后发生的事情。我检查了修订历史记录,该文件没有任何更改。
最佳答案
session 在服务器上创建和维护,以供来自特定用户代理(主要是 Web 浏览器)的后续请求。
因此,如果您不在用户请求的上下文中,例如在计划的作业处理中或在 Bootstrap.groovy 中,则无法使用 session 。
关于java - 无法在 grails 中的非请求渲染操作中使用 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23670453/