[英]Named (map) constructors do not work in grails.gsp.PageRenderer
[英]Groovy PageRenderer not rendering GSP
我有一个版本为 2.2.4 的 Grails 应用程序。 我正在尝试将 gsp 呈现为字符串参数并将其发送到 Mandrill 模板以作为邮件发送。 代码如下
import grails.gsp.PageRenderer
SampleService{
PageRenderer groovyPageRenderer
def mailService
def sampleSendMail(List<String> names){
def view = groovyPageRenderer.render(view: '/mail/_sampleMail', model: [names: names])
mailService.sendMandrillTemplate(view)
}
}
GSP 如下所示
<%@ page contentType="text/html" %>
<table>
<th>Name</th>
<g:each in="${names}" var="name" >
<tr>${name}</tr>
</g:each>
</table>
当我在本地测试时,它按预期工作。 但是当我在开发环境中对此进行测试时,“view”参数始终为空。
这有什么具体原因吗? 这个问题让我感到困惑,因为我想不出这个问题的逻辑原因,因为它在我的本地机器上工作。 此外,这在开发环境中执行时不会抛出任何错误消息,它只是返回一个空字符串。
对此的任何见解都会有所帮助
编辑 - - - -
我正在使用 Mandril 插件 (org.grails.plugins:mandrill:0.5)。 我在“sendMandrillTemplate”方法中使用了 Mandrill sendTemplate 方法。 这不是问题。 问题是当我在变量中呈现 gsp 时,它在我的开发环境中是空的。
事实上,有一个关于类似问题的线程: https : //github.com/grails/grails-views/issues/140
我们正在使用 gsp 模板来创建电子邮件内容,因此可能有一个丑陋的 hack 使其在开发和生产环境中都能正常工作:
import java.nio.file.Paths
import org.grails.io.support.ClassPathResource
def notificationsPath = Paths.get(new ClassPathResource("notifications/_welcome.gsp").getURI()).toString()
def f = new File(notificationsPath)
def text = f.getText()
def user = User.findByUsername('email@example.com')
def properties = [url:"https://example.pl"]
def binding = [user: user, properties: properties]
def engine = new groovy.text.SimpleTemplateEngine()
def template = engine.createTemplate(text).make(binding)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.