【问题标题】:groovyPagesTemplateEngine failing in quartz job with errorgroovyPagesTemplateEngine 在石英作业中失败并出现错误
【发布时间】:2012-04-09 07:46:47
【问题描述】:

我们在应用程序中使用 Quartz 调度来调度作业以生成和发送自审核电子邮件。
我正在尝试使用 GroovyPagesTemplateEngine 从电子邮件模板生成处理后的 emailBody。 当处理不使用 Quartz 调度时,emailTemplate 被正确处理成 EmailBody。但是,当使用 Quartz 运行作业以处理电子邮件模板时,

groovyPagesTemplateEngine is failing in quartz job with error
[12:10:55 AM] Mandar: java.lang.IllegalStateException: TemplateEngine not initialised correctly, no [resourceLoader] specified!

这就是我想做的事情

def getInfo(){
MockHttpServletRequest servletRequest = new MockHttpServletRequest()


    GrailsWebRequest grailsWebRequest = new GrailsWebRequest(servletRequest, new MockHttpServletResponse(), new MockServletContext())
    grailsWebRequest.setAttribute(GrailsApplicationAttributes.WEB_REQUEST, grailsWebRequest, 0)
    RequestContextHolder.requestAttributes = grailsWebRequest

    GroovyPagesTemplateEngine engine = new GroovyPagesTemplateEngine()

    StringWriter sw = new StringWriter()
    PrintWriter pw = new PrintWriter(sw)

    engine.createTemplate('myteplate').make(model).writeTo(pw)
    println sw.toString()
    return sw.toString()
}

我知道 Quartz 调度程序没有与之关联的 WebRequest。我认为电子邮件处理因此而失败。 如何在计划作业运行时处理电子邮件模板以生成 emailBody 内容,而不是从 UI 登录到应用程序。

提前致谢。

【问题讨论】:

    标签: exception grails groovy quartz-scheduler template-engine


    【解决方案1】:

    resourceLoader 没有在 groovyPagesTemplateEngine 中初始化,因为您只是直接创建它的新实例。相反,您应该让 Spring 的依赖注入为您完成这项工作。

    将以下行添加到您的服务中:

    class YourService {
    
        def groovyPagesTemplateEngine
    
        def getInfo(){
          GroovyPagesTemplateEngine engine = groovyPagesTemplateEngine
          //your code here
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可以尝试使用http://www.intelligrape.com/blog/2010/12/27/request-mocking-to-use-groovypagestemplateengine-in-backend-threads/中提到的步骤

      如果您使用的是 Grails 2.0.x,您将获得一个名为 groovyPageRenderer 的 bean,它也可以在 Web 请求的上下文之外使用。更多详情,http://mrhaki.blogspot.in/2012/03/grails-goodness-render-gsp-views-and.html

      【讨论】:

        猜你喜欢
        • 2019-01-14
        • 1970-01-01
        • 1970-01-01
        • 2018-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-20
        • 1970-01-01
        相关资源
        最近更新 更多