0
votes

I cannot get the Grails groovyPage Renderer to work without this error. I have tried some various solutions but cannot seem to resolve it. I have tried it on Grails 2.1.1 and 2.4.4 with both servlet 2.5 and 3.0. Tried to follow the example on the blog below as well.

http://mrhaki.blogspot.com/2012/03/grails-goodness-render-gsp-views-and.html

Source:

class RenderTestController {

    static allowedMethods = [save: "POST", update: "PUT", delete: "DELETE"]

    def renderEx {
        def updateList= RenderService.updateRender()
    }

Service:

package renderexample

import grails.gsp.PageRenderer
import java.util.List;
import java.util.Map;

class RenderService {

    public static List updateRender() {

        PageRenderer groovyPageRenderer
        def gspReturn = []

        gspReturn = [-1, 1, 2]

        def htmlBody = groovyPageRenderer.render(template:'/emails/_renderUpdate', model: [results: gspReturn])

        println htmlBody

        return gspReturn
    }
}

Error 2015-08-10 15:39:45,801 [localhost-startStop-1] ERROR context.GrailsContextLoaderListener - Error initializing the application: Error creating bean with name 'renderexample.RenderTestController': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [renderexample.RenderTestController]: Constructor threw exception; nested exception is java.lang.NullPointerException: Cannot invoke method render() on null object

Message: Error creating bean with name 'renderexample.RenderTestController': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [renderexample.RenderTestController]: Constructor threw exception; nested exception is java.lang.NullPointerException: Cannot invoke method render() on null object Line | Method ->> 262 | run in java.util.concurrent.FutureTask

Any help is appreciated. Thanks.

1

1 Answers

1
votes

I don't know why you want the updateRender method to be static. There is no good reason to do that.

Try something like this...

class RenderTestController {

    def renderService

    def renderEx() {
        def updateList= renderService.updateRender()

        // ...
    }

}

class RenderService {

    PageRenderer groovyPageRenderer

    List updateRender() {

        def gspReturn = []

        gspReturn = [-1, 1, 2]

        def htmlBody = groovyPageRenderer.render(template:'/emails/_renderUpdate', model: [results: gspReturn])

        // ...
    }
}