createLink не работает в (почтовых) шаблонах? - PullRequest
2 голосов
/ 24 ноября 2011

У меня есть действие контроллера и отправка в нем письма с чем-то вроде:

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.Если я использую тот же тег createLink в gsp, который не является шаблоном, он работает (кстати, электронная почта работает нормально, а все остальные элементы в этом шаблоне отображаются хорошо).

У вас естьпредложения по этому поводу?

Ответы [ 2 ]

3 голосов
/ 24 ноября 2011

Возможно, вам нужна абсолютная ссылка:

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

Кстати, вы также можете использовать синтаксис ${}, например:

<a href="${g.createLink(controller: "servicecontroller", action: "confirm", absolute: true)}">linktext</a>
0 голосов
/ 24 ноября 2011

Цитата: Я должен указать 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>

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...