2015-08-10 2 views
0

Я не могу заставить Grails GroovyPage Renderer работать без этой ошибки. Я попробовал несколько различных решений, но, похоже, не смог его решить. Я пробовал это на Grails 2.1.1 и 2.4.4 с обоих сервлетов 2.5 и 3.0. Пытался следовать примеру в блоге ниже.Ошибка Grails groovyPageRenderer: невозможно вызвать метод render() для нулевого объекта

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: 45801 [локальный-стартстопный-1] ERROR context.GrailsContextLoaderListener - Ошибка при инициализации приложения: Ошибка создания bean-компонента с именем «renderexample.RenderTestController»: Ошибка создания бина; Вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр класса bean [renderexample.RenderTestController]: конструктор сделал исключение; inest exception is java.lang.NullPointerException: Не удается вызвать метод render() для нулевого объекта

Сообщение: Ошибка при создании bean-компонента с именем 'renderexample.RenderTestController': Ошибка создания бина; Вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр класса bean [renderexample.RenderTestController]: конструктор сделал исключение; Вложенное исключение - java.lang.NullPointerException: Невозможно вызвать метод render() для нулевого объекта Строка | Метод - >> 262 | run in java.util.concurrent.FutureTask

Любая помощь приветствуется. Благодарю.

ответ

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

     // ... 
    } 
} 
+0

Джей, кроме фиксации метод updateRender поэтому не статична, как сказал Джефф, обратите внимание, что * PageRenderer groovyPageRenderer * должно быть свойство * RenderService * класса. В противном случае инъекция зависимости не будет работать, что означает, что groovyPageRenderer будет равен нулю. –