Exception groovyPagesTemplateEngine在quartz作业中失败,出现错误

Exception groovyPagesTemplateEngine在quartz作业中失败,出现错误,exception,grails,groovy,quartz-scheduler,template-engine,Exception,Grails,Groovy,Quartz Scheduler,Template Engine,我们在应用程序中使用Quartz调度来调度作业,以生成和发送自我审核电子邮件。 我正在尝试使用GroovyPagesTemplateEngine从电子邮件模板生成已处理的emailBody。 当处理不使用Quartz调度时,emailTemplate将正确处理到EmailBody中。但当使用Quartz运行作业以处理电子邮件模板时 groovyPagesTemplateEngine is failing in quartz job with error [12:10:55 AM] Mandar:

我们在应用程序中使用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。我认为电子邮件处理会因此而失败。 如何在运行计划作业时处理emailtemplate以生成emailBody内容,而不是通过从UI登录到应用程序


提前感谢。

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

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

class YourService {

    def groovyPagesTemplateEngine

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

您可以尝试使用中提到的步骤

如果您使用的是Grails2.0.x,那么会得到一个名为GroovyPagerEnder的bean,它也可以在web请求的上下文之外使用。欲知详情,