Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails 如何在Services中使用数据库中的信息呈现Html模板_Grails - Fatal编程技术网

Grails 如何在Services中使用数据库中的信息呈现Html模板

Grails 如何在Services中使用数据库中的信息呈现Html模板,grails,Grails,我很难做到以下几点: 有一个不时运行的作业(完成) 从该作业内的数据库中获取一些数据(完成) 下一步是将该数据与我已经创建的模板(HTML)一起使用,然后将其呈现为PDF 然后发送一封带有附件中pdf的电子邮件 这是我目前的工作: def execute() { println("Hi, I am a schedule Job triggering every half an hour from 7 AM to 22 PM that will never stop runnin

我很难做到以下几点:

  • 有一个不时运行的作业(完成)

  • 从该作业内的数据库中获取一些数据(完成)

  • 下一步是将该数据与我已经创建的模板(HTML)一起使用,然后将其呈现为PDF

  • 然后发送一封带有附件中pdf的电子邮件

这是我目前的工作:

def execute() {
       println("Hi, I am a schedule Job triggering every half an hour from 7 AM to 22 PM that will never stop running until master jose tells me to :)")

       EventService.updateOffersdwh()
       EventService.getUncheckedOffers()
    }
哪个工作正常:)

这些是我的服务在上一个作业中调用的方法:

def updateOffersdwh(){

    def sql = Sql.newInstance("jdbc:postgresql://"+hostname+":5432/xyz", username, password, "org.postgresql.Driver")
    sql.rows(" Select From bird_admin.updt_offerorders('2018-03-07','2018-03-07','" + database + "') ");

    println('Updating Order and Offers datawarehouse...');      
}

def getUncheckedOffers(){

    def sql = sql.newInstance("jdbc:postgresql://"+hostname+":5432/xyz", username, password, "org.postgresql.Driver")

    def query = "select id, poo_id, b.name, b.address_line1, b.address_line2, b.zipcode, event_date::date, task_name, sku_id, sku_name, column_type, column_value, instance_name,checked FROM bird_admin.ooisdwh a LEFT JOIN sd_bel.cfg_point_of_operation b ON a.poo_id = b.id WHERE checked = false"
    def offers = sql.rows(query)

    println('DEBUG OFFERS FINAL:: '+offers)
}
谁能给我下一步的建议或指导

如何使用views\template文件夹中已有的html模板

使用数据库中的信息并用该信息呈现html的最佳方式是什么


我应该使用控制器吗?如果是,怎么做?我现在有点不知所措了:|

我不能100%确定您是否要在电子邮件正文或附件中使用模板,但要在电子邮件正文中使用模板,您可以执行以下操作

首先为以下对象添加依赖项:

build.gradle

dependencies {
    compile "org.grails.plugins:mail:2.0.0"
    ...
}
然后在您的服务中,使用模板生成正文并发送,如:

class YourService {

    def groovyPageRenderer
    def mailService


    def getUncheckedOffers(){

        def sql = sql.newInstance("jdbc:postgresql://"+hostname+":5432/xyz", username, password, "org.postgresql.Driver")

        def query = "select id, poo_id, b.name, b.address_line1, b.address_line2, b.zipcode, event_date::date, task_name, sku_id, sku_name, column_type, column_value, instance_name,checked FROM bird_admin.ooisdwh a LEFT JOIN sd_bel.cfg_point_of_operation b ON a.poo_id = b.id WHERE checked = false"
        def offers = sql.rows(query)
        def content = groovyPageRenderer.render( view: "/aViewDirectory/mail",
                    model:[offers : offers ] )

        mailService.sendMail {
            to 'anEmailRecipient@somewhere.com'
            subject "Email subject"
            html( content )
    }
}
电子邮件插件文档中有一个部分。
您可以按照上述步骤从模板生成PDF,并根据文档进行附加。

这可能就是我想要的。谢谢你,非常感谢@Mike W!!事实上,你知道如何将视图呈现为pdf,然后添加到附件吗?看看呈现插件,你只需要呈现到文件并附加到电子邮件,这一部分应该可以帮助我创建一个模板,我使用html和引导创建了一个模板,但我无法将其呈现为pdf,总是抛出关于标记未关闭的错误,这没什么意义。是否有我需要使用的特定类型的模板?看起来好像与xHTML有关,但我没搞错,我想:D无论如何,谢谢你的帮助!