2010-07-19 137 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

相關問題