Grails g:link - 在结果锚点href属性中包含应用程序名称

时间:2011-02-21 20:04:31

标签: grails gsp

本GSP:

<g:link controller="book" action="show" id="5">Example</g:link>

产生此HTML:

<a href="/book/show/5">Example</a>

这与HTTP主机相关。如果您的网站在http://localhost:8080运行,那很好。

在开发过程中,应用程序通常会在http://localhost:8080/appName运行。

在这种情况下,上述链接无法使用 - 它会产生http://localhost:8080/book/show/5的绝对网址,而不是必需的http://localhost:8080/appName/book/show/5

上述GSP需要对结果锚点的href中存在的应用名称进行哪些更改?

5 个答案:

答案 0 :(得分:3)

配置设置grails.app.context应该等于您希望部署应用程序的上下文。如果未设置,则在默认配置中,它默认为您的应用程序名称,如http://localhost:8080/appName。如果您要在根上下文中部署您的应用(例如http://locahost:8080/),请将其添加到您的Config.groovy

grails.app.context = "/"

如果正确设置了上下文,g:link标记生成的URL将包含控制器名称前的上下文。

答案 1 :(得分:2)

我发现meta标记对于获取GSP文件中的信息非常有用。

例如,如果您需要应用程序名称,可以这样:

<g:meta name="app.name"/>

您可以在application.properties文件中获取任何属性。

如果你像我一样,需要将它连接到另一个值,这是我的例子。请记住,任何标记都可以用作没有g:命名空间的方法。例如:

<g:set var="help" value="http://localhost:8080/${meta(name:"app.name")}/help" />

Grails关于此的文档有点差,但它是here

答案 2 :(得分:1)

对我而言,使用<g:link>的唯一最佳理由是,如果有上下文,则会添加上下文;如果您在http://localhost:8080http://mycoolsite.com生成,则会省略上下文 - 否则你自己将这些部分连接在一起是微不足道的。

g:resource与css,javascript等一起使用也是如此 - 它允许你有一个GSP无论上下文是什么都可以工作(例如'appName'),因为它在运行时被解析了。 p>

答案 3 :(得分:0)

我认为这就是grails.serverURL的用途。您在Config.groovy中定义了此配置变量,请查看configuration documentation for Grails以获取更多详细信息。

希望这有帮助!

答案 4 :(得分:0)

createLink标记会在链接中自动包含您的appname / context参数。

以下是reference doc。