首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在grails服务中使用g.render

在grails服务中使用g.render
EN

Stack Overflow用户
提问于 2009-11-22 10:37:09
回答 4查看 10.4K关注 0票数 18

我正尝试在grails服务中使用g.render,但似乎在默认情况下没有为服务提供g。有没有办法让模板引擎在服务中呈现视图?我可能走错了路。我希望将视图从部分模板呈现为字符串,并将生成的字符串作为JSON响应的一部分发回,以便与AJAX更新一起使用。

有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-11-22 23:15:21

我完全同意John的观点--在服务中实现GSP通常是一个糟糕的设计决策。但是没有例外的规则!如果您仍然想这样做,请尝试以下方法:

代码语言:javascript
复制
class MyService implements InitializingBean {
    boolean transactional = false
    def gspTagLibraryLookup  // being automatically injected by spring
    def g

    public void afterPropertiesSet() {
        g = gspTagLibraryLookup.lookupNamespaceDispatcher("g")
        assert g
    }

    def serviceMethod() {    
       // do anything with e.g. g.render
    }
}

当然,使用gspTagLibraryLookup bean可以访问服务中所有其他所需的标记库。

票数 27
EN

Stack Overflow用户

发布于 2013-09-14 04:12:35

在带有PageRenderer的Grails 2中,这甚至更简单。例如:

代码语言:javascript
复制
class SomeService {
    def groovyPageRenderer

    void someMethod() {
        String html = groovyPageRenderer.render(view: '/email/someTemplateName')
    }
}

API - http://grails.org/doc/latest/api/grails/gsp/PageRenderer.html

更完整的示例- http://mrhaki.blogspot.com/2012/03/grails-goodness-render-gsp-views-and.html

票数 15
EN

Stack Overflow用户

发布于 2009-11-22 13:12:43

我的建议是在控制器中执行此操作。服务应该具有可重用的逻辑,并且不依赖于视图模板,将这项工作留给控制器。使用该服务获取需要传递给模板的数据,但将与模板交互的工作留给控制器。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1777640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档