grails groovyPageRenderer在src / groovy中的文件中注入

时间:2017-11-25 11:37:56

标签: grails gsp

我想在src / groovy / GSPFormatter中注入groovyPageRenderer, 如果不调用新的构造函数,我怎么能这样做?

修改

package gsprenderer
import spud.core.FormatterInterface
import grails.gsp.PageRenderer

class GSPFormatter implements FormatterInterface {

   PageRenderer groovyPageRenderer = grailsApplication.mainContext.getBean('groovyPageRenderer')

   String compile(String content) {
      groovyPageRenderer.render(view: new ByteArrayOutputStream().write(content.bytes), null)
   }
}

是我在src / groovy / GSPFormatter中的代码(基本上使用默认的注入机制,它也不起作用)

2 个答案:

答案 0 :(得分:1)

我想,你指的是grails.gsp.PageRenderer ...顺便说一句,我使用的是Grails 3.3.0

这是一个小的(测试的)示例 -

在application.yml

grails:
    spring:
        bean:
            packages:
                    - ovr

在scr / groovy / ovr

package ovr.renderer

import grails.gsp.PageRenderer
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Component

@Component
class CustomRenderer {
    @Autowired
    PageRenderer pageRenderer

    def page(){
        pageRenderer.render(view: '/myrenderer', model: [hello: 'hello'])
    }

}
控制器中的

@Autowired
CustomRenderer customRenderer

def myPage(){
    render customRenderer.page()
}

在views / myrenderer.gsp

${hello}

相关帖子 -

Accessing Grails services from src/groovy

How to inject Grails services into src/groovy classes

PS - 如果您在bean中描述/conf/spring/resources.groovy,请退出application.yml中的部分(上面给出)

答案 1 :(得分:-1)

似乎你不能在src层次结构中的文件中注入任何bean。

我将我的方向转向处理rendertemplates引擎(简单,......)

问题已结束,

非常感谢