我想在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中的代码(基本上使用默认的注入机制,它也不起作用)
答案 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引擎(简单,......)
问题已结束,
非常感谢