当前位置: 首页 > 知识库问答 >
问题:

Groovy PageRenderer不呈现GSP

苏坚成
2023-03-14

我有一个版本为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)
    }
}

普惠制如下

<%@ 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:山楂: 0.5)。我在“sendMandrillTemboard”方法中使用Mandrill sendTemboard方法。这不是问题。问题是当我在变量中呈现gsp时,它在我的开发环境中是空的。

共有1个答案

施靖
2023-03-14

事实上,类似的问题有一个线索:https://github.com/grails/grails-views/issues/140

我们正在使用gsp模板来创建电子邮件内容,因此可能会出现丑陋的黑客行为,使其在dev和prod环境下都能工作:

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)
 类似资料:
  • 问题内容: 如何呈现以下选项列表的值? 预期结果(预期为value =“ limit.value”: 结果: 问题答案: 该指令未在元素上设置属性。它始终使用序列。 使用方式: 将的标签设置为 将值保存到选择的 检查此小提琴:http : //jsfiddle.net/bmleite/k58Hw/

  • 我的表格代码: 我的视图代码: 堆栈跟踪: 环境: 请求方法:获取请求URL: Django版本:1.4 Python版本:2.7。2个已安装的应用程序:('django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.sites','django.contrib.messa

  • 我正在使用react、Redux和react Router开发一个react web应用程序,带有服务器端呈现(使用express) 我面临的问题有点难以解释。我将试着在下面的步骤中进行解释。 > 您首先从http://www.example.com/articles/1234这样的URL进入应用程序。express服务器将发送正确的内容,其中包括正确的页面源和DOM(来自chrome Eleme

  • 如何呈现以下选项列表的值? 预期结果(预期值="limit.value": 结果:

  • 我正在使用飞碟库生成pdf。但是我对一些html实体有问题。 我已经在搜索解决方案了,我在这个论坛和其他地方找到了很多提示,但仍然存在问题。 我尝试过这种方法: http://sdtidbits.blogspot.com/2008/11/flying-saucer-xhtml-rendering-and-local.html 但没有任何成功 我的代码如下所示: 其中pdf是要创建的新pdf的名称,