2012-04-09 7 views
0

アプリケーションでQuartzスケジューリングを使用して、ジョブが自己監査電子メールを生成して送信するようにスケジュールしています。
GroovyPagesTemplateEngineを使用して電子メールテンプレートから処理されたemailBodyを生成しようとしています。 処理でQuartzスケジューリングを使用しない場合、emailTemplateはEmailBodyに正しく処理されます。しかし、ジョブはemailtemplateは私がクォーツスケジューラは、それに関連付けられているWebRequestクラスを持っていないことを認識していますエラーのある石英ジョブでgroovyPagesTemplateEngineが失敗する

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() 
} 

を行うにしようとしています何

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

これを処理するためにクォーツを使用して実行されたとき。私は電子メール処理がこのために失敗していると思っています。 スケジュールされたジョブの実行時にemailTemplateを処理して、emailBodyコンテンツを生成する方法を教えてください。UIからアプリケーションにログインすることはできません。

ありがとうございます。

答えて

0

groovyPagesTemplateEngineでは、新しいインスタンスを直接作成するため、resourceLoaderは初期化されません。代わりに、あなたはSpringの依存関係注入があなたのために仕事をするようにすべきです。

はあなたのサービスに次の行を追加します。あなたはGrailsの2.0.xの上にある場合

class YourService { 

    def groovyPagesTemplateEngine 

    def getInfo(){ 
     GroovyPagesTemplateEngine engine = groovyPagesTemplateEngine 
     //your code here 
    } 
} 
関連する問題