为什么我在Grails中收到错误的邮件链接

时间:2014-08-12 17:44:49

标签: email grails hyperlink

我的grails应用程序中的链接错误有问题。我是Grails的新人。

menu.gsp

<!DOCTYPE html>
<html>
<head>
<meta name="layout" content="bootstrap-main" />
<title>SARNA</title>
</head>
<body>
    //other options

    <g:link class="btn btn-primary" controller="Unit" action="index">Send Mail</g:link>

</body>
</html>

UnitController.groovy

package com.sarna.controller

import org.codehaus.groovy.grails.web.mapping.LinkGenerator;

class UnitController {

    LinkGenerator grailsLinkGenerator
    def index() {
        def login = "Tazz" 
        def token = UUID.randomUUID().toString()
        def link = grailsLinkGenerator.serverBaseURL
        sendMail {
            to "mygmail@gmail.com"
            subject "SARNA - account created"
            html g.render (template:"/mail/templates/test", model:[login:login, link:link])
          }
    }
}

_test.gsp

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
</head>
<body>
  <h3>Welcome ${login },</h3>
  <a href="${createLink(base: '${link }')}">${link }</a>
  <p>Greetings, <br/>SARNA Team</p>
</body>
</html>

每次我通过此链接收到邮件:http://localhost:8080/SARNA。它看起来不错,但是当我点击它时,在我的浏览器中使用以下地址打开新标签:https://o.iplsc.com/%24%7Blink%20%7D/unit/index。 有些不对劲但我不知道......你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

%24%7Blink%20%7D${link }的urlencoded版本。 a)grails / groovy不会替换'strings'中的$ {}。 b)你不需要它;只需使用base: link

如果您不想在链接中看到控制器/操作,则必须确保/正确映射到您的控制器,然后才能使用${createLink(absolute: true, uri: '')}(或玩游戏)安全uri: '/'