whi*_*exx 2 email grails groovy sitemesh gsp
我有不同类型的html电子邮件,我想发送给我的用户,但每封电子邮件使用相同的布局(emailLayout.gsp).我需要将此电子邮件(gsp)呈现为字符串,以通过电子邮件方式发送它们.
使用此代码,这确实有效,但我需要使用groovyPageRenderer.render()方法,因为我需要在grails过滤器或服务中发送电子邮件(以上2个经过评论的示例不起作用):
//def emailContent = groovyPageRenderer.render(view: '/email/emailConfirmation', model: [userInstance: userInstance])
//def emailContent = g.render(view: "/email/emailConfirmation", model: [userInstance: userInstance])
def emailContent = g.include(view: "email/emailConfirmation.gsp", model: [userInstance: userInstance])
Run Code Online (Sandbox Code Playgroud)
使用groovyPageRenderer不包含我的布局html,只会呈现emailConfirmation.gsp内容.所以我的emailLayout.gsp中的页眉和页脚丢失了.为什么groovyPageRenderer.render()没有呈现完整的gsp WITH布局?
谢谢你的帮助!
小智 8
这是一篇关于mrhaki使用groovyPageRenderer的有用帖子:http://mrhaki.blogspot.de/2012/03/grails-goodness-render-gsp-views-and.html
它实际上演示了使用呈现电子邮件确认的示例.它还说明了为什么Sitemesh不起作用.
我们可以在GSP视图和模板中使用标记库中的标记.无法使用Sitemesh布局.PageRenderer在请求范围之外工作,这是Sitemesh布局所必需的.
因此,如果无法使用Sitemesh,则必须重新排列模板.例如,您可以将布局放在GSP中emailConfirmation
<g:render template="/email/header" />
<g:render template="/email/emailConfirmation" />
<g:render template="/email/footer" />
Run Code Online (Sandbox Code Playgroud)
但是,由于您使用通用布局有多个电子邮件模板,因此这种方法会非常重复.相反,你可以有一个GSP emailLayout这样
<g:render template="/email/header" />
<g:render template="${templateName}" />
<g:render template="/email/footer" />
Run Code Online (Sandbox Code Playgroud)
并从您的服务中传递适合的模型
def emailContent = groovyPageRenderer.render(view: '/email/mailLayout', model: [templateName: '/email/emailConfirmation', userInstance: userInstance])
Run Code Online (Sandbox Code Playgroud)
这样,您可以将您的布局重用于不同的电子邮件模板.
或者您在第一步中呈现内容并将其传递给模板
def confirmation = groovyPageRenderer.render(template: '/email/emailConfirmation', model: [userInstance: userInstance])
def emailContent = groovyPageRenderer.render(view: '/email/mailLayout', model: [content: confirmation])
Run Code Online (Sandbox Code Playgroud)
输出的地方
<g:render template="/email/header" />
${content}
<g:render template="/email/footer" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1490 次 |
| 最近记录: |