createLink无法在(邮件)模板中工作?

时间:2011-11-24 09:00:50

标签: email templates grails hyperlink

我有一个控制器操作并在其中发送邮件,例如:

mailService.sendMail {
    ...
    g.render(template: "mailtemplate")
}
此模板文件中的

名为_mailtemplate.gsp我使用

<a href="<g:createLink controller="servicecontroller" action="confirm"/>">linktext</a>

但输出是http://action ......就是这样!我希望有http://www.example.com/action。如果我在gsp中使用相同的createLink标签而不是模板,那么它就可以了(顺便说一句,电子邮件工作正常,此模板中的所有其他内容都可以很好地呈现)。

你有什么建议吗?

2 个答案:

答案 0 :(得分:3)

可能你需要绝对的链接:

<a href="<g:createLink controller="servicecontroller" action="confirm" absolute="true"/>">linktext</a>

顺便说一下,你也可以在那里使用${}语法,例如:

<a href="${g.createLink(controller: "servicecontroller", action: "confirm", absolute: true)}">linktext</a>

答案 1 :(得分:0)

  

引用:我必须在配置文件中指定serverURL,但我想要动态

您可以这样做:

<强> Config.groovy中:

environments {
    development {
        grails.serverURL = "http://localhost:8080"
    }
    production {
        grails.serverURL = "http://www.mywebsite.com"
    }
}

然后在您的服务中发送电子邮件:

    import org.codehaus.groovy.grails.commons.ConfigurationHolder

    def baseURL = ConfigurationHolder.config.grails.serverURL

    mailService.sendMail {
    ...
    g.render(template: "mailtemplate", model:['baseURL':baseURL])
    }

最后在您的链接中

 <a href="<g:createLink controller="servicecontroller" action="confirm" base="${baseURL}"/>">linktext</a>

我希望这会有所帮助