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

时间:2018-03-14 15:06:32

标签: grails

我很难做到以下几点:

  • 有一份不时运作的工作(完成)

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

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

  • 然后在附件中发送包含该pdf的电子邮件

这是我目前的工作:

d2

正常工作:)

这些是我在前一份工作中调用的服务方法:

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()
    }

有人可以在接下来的步骤中建议或指导我吗?

如何在我的views \ template文件夹中的html中使用模板?

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

我应该使用控制器吗?如果是这样,怎么样?我现在有点失落了:|

1 个答案:

答案 0 :(得分:1)

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

首先添加about attachments的依赖项:

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 )
    }
}

电子邮件插件文档{{3}}中有一节。 您可以按照上述步骤从模板生成PDF并按照文档进行附加。