【问题标题】:Grails groovyPageRenderer error: Cannot invoke method render() on null objectGrails groovyPageRenderer 错误:无法在空对象上调用方法 render()
【发布时间】:2015-11-03 00:20:50
【问题描述】:

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

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 时出错:bean 实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 bean 类 [renderexample.RenderTestController]:构造函数抛出异常;嵌套异常是 java.lang.NullPointerException: Cannot invoke method render() on null object

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

感谢任何帮助。谢谢。

【问题讨论】:

    标签: grails grails-2.0


    【解决方案1】:

    我不知道您为什么希望 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])
    
            // ...
        }
    }
    

    【讨论】:

    • Jay,除了修复 updateRender 方法使其不是静态的,正如 Jeff 所说,请注意 PageRenderer groovyPageRenderer 应该是 RenderService 类的属性.否则依赖注入将不起作用,这意味着 groovyPageRenderer 将为空。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 2016-11-14
    • 1970-01-01
    相关资源
    最近更新 更多