我的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
。
有些不对劲但我不知道......你能帮助我吗?
答案 0 :(得分:1)
%24%7Blink%20%7D
是${link }
的urlencoded版本。 a)grails / groovy不会替换'strings'
中的$ {}。 b)你不需要它;只需使用base: link
如果您不想在链接中看到控制器/操作,则必须确保/
正确映射到您的控制器,然后才能使用${createLink(absolute: true, uri: '')}
(或玩游戏)安全uri: '/'
)