Grails groovyPageRenderer error: Cannot invoke method render() on null object

Grails groovyPageRenderer error: Cannot invoke method render() on null object

如果没有这个错误,我无法让 Grails groovyPage 渲染器工作。我尝试了一些不同的解决方案,但似乎无法解决它。我已经在 Grails 2.1.1 和 2.4.4 上用 servlet 2.5 和 3.0 试过了。也尝试按照下面博客上的示例进行操作。

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

来源:

class RenderTestController {

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

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

服务:

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

错误 2015-08-10 15:39:45,801 [localhost-startStop-1] 错误 context.GrailsContextLoaderListener - 初始化应用程序时出错:创建名称为 'renderexample.RenderTestController' 的 bean 时出错:实例化豆失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 bean class [renderexample.RenderTestController]:构造函数抛出异常;嵌套异常是 java.lang.NullPointerException:无法在空对象

上调用方法 render()

消息:创建名称为 'renderexample.RenderTestController' 的 bean 时出错:bean 实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 bean class [renderexample.RenderTestController]:构造函数抛出异常;嵌套异常是 java.lang.NullPointerException:无法在空对象上调用方法 render() 线 |方法 ->> 262 | 运行 在 java.util.concurrent.FutureTask

感谢任何帮助。谢谢

我不知道你为什么要 updateRender 方法是静态的。没有充分的理由这样做。

尝试这样的事情...

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])

        // ...
    }
}