2010-07-19 59 views
6

我有一个“/ testapp”上下文的测试grails应用程序设置。当我在gsp中添加一个引用/它不会去我的grails.app.context的根目录,而是到我的grails.serverURL属性的根目录的链接。grails应用程序根上下文

例如给出HREF “/css/main.css” 链接

我会认为这个链接实际上会看在本地主机:8080/testapp/CSS/main.css的以代替localhost:8080/css/main.css

有没有一种方法,我可以得到/我开始在我的grails.app.context与grails.serverURL?

回答

6

问题是你如何将你的链接添加到你的gsps?

我们做的事情一样

<link rel="stylesheet" href="${resource(dir: 'css', file: 'stylesheet1.css')}"/> 

<g:javascript library="prototype"/> 

使用G:javascript和资源标签和方法,你告诉Grails的设置为你的路径...

我怀疑你只是把标准标签放在...

goto

http://grails.org/doc/latest/

,并在左手导航标签,寻找资源和/或JavaScript来得到一个想法(其难以直接到文档链接... :()

+0

谢谢回复。我们正在使用标签库,但是我们有一个外部库的情况,它有一个我们无法更改的硬编码/路径/到/ css。听起来像我们将不得不寻找解决办法。 – ibuck 2010-07-19 22:29:23

19

使用页面

${request.contextPath} 

,然后请求的contextPath值前面加上额外的主机信息,如果需要构建完整的URL

1

你或许应该使用的资源标签到你的grails CSS目录中,就像上面提到的一样。但是,您也可以使用resource方法找到使用相同的标记你的Web应用程序的根上下文:

${resource(uri:'/')} 

那么就使用该字符串的地方。

0

而且,当涉及到如样式表元素,我建议创建一个简单的标记,会做的伎俩,类似的规定:

class StylesTagLib { 
    static namespace = "g" 

    def stylesheet = { args, body -> 
     out << """<link rel="stylesheet" href="${resource(dir: 'css', file: args.href)}"/>""" 
    } 
} 

,后来在代码中使用这样的:

<g:stylesheet href="main.css"/> 

很明显,你可以用约定拨弄(我应该使用预定义的文件夹?我要补充的扩展名为.css自动?这样的东西),但总的想法是隐藏一个很好的定义标签背后的丑陋。

6

我有一个类似的问题OP - 如何让Grails形成在上下文根和NOT服务器根启动的链接?

您可以使用g:link和g:createLink标签的“uri”属性。例如:如果适用

<g:link uri="/login">login</g:link> 

将前缀的情况下,并产生以下

<a href="/login">login</a> if your app is at the http://server/ 
<a href="/testapp/login">login</a> if your app is at http://server/testapp/ 

不知道为什么它在参考文档的undocumented属性,但我发现它在Javadocs - ApplicationTagLib

相关问题