我们在应用程序中使用Quartz调度来安排作业以生成和发送自我审核电子邮件 我正在尝试使用GroovyPagesTemplateEngine从电子邮件模板生成已处理的emailBody。 当处理不使用Quartz调度时,emailTemplate被正确处理成EmailBody。但是当使用Quartz for emailtemplate处理作业
时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登录应用程序。
提前致谢。
答案 0 :(得分:0)
在groovyPagesTemplateEngine中没有初始化resourceLoader,因为您只是直接创建它的新实例。相反,你应该让Spring的依赖注入为你完成工作。
将以下行添加到您的服务中:
class YourService {
def groovyPagesTemplateEngine
def getInfo(){
GroovyPagesTemplateEngine engine = groovyPagesTemplateEngine
//your code here
}
}
答案 1 :(得分:0)
如果您使用的是Grails 2.0.x,则会获得一个名为groovyPageRenderer的bean,它也可以在Web请求的上下文之外使用。有关详细信息,请http://mrhaki.blogspot.in/2012/03/grails-goodness-render-gsp-views-and.html