2013-01-09 41 views
3

我試圖在Grails的創建使用未公開grailsLinkGenerator類我bootsrap文件鏈接到一個圖像資源2.0.3使用grailsLinkGenerator產生BootStrap.groovy中鏈接的圖像

我已經成功注入服務使用

... 
LinkGenerator grailsLinkGenerator 
... 

但是,下面的代碼生成的URL是不正確的

grailsLinkGenerator.resource(dir:'images', file:'1.jpg') 

沒有errorsm和路徑產生的人大多數看起來是正確的,除了它在URL中缺少「靜態」。我使用這個錯誤嗎?有沒有其他的方式來訪問自舉中的靜態資源?

+0

只爲了解你的問題:爲什麼你需要在Bootstrap上生成這個鏈接? –

+0

@SérgioMichels我有一個'tshirt'域,每個域都有一個'thumbnailImageUrl'。在bootstrap中,我想創建一些帶有以web-app/images託管的圖像的演示發球臺(通常用於鏈接例如s3託管的圖像或其他內容)。 – Sitati

回答

1

查看ApplicationTagLib源代碼,您可以看到g:resource僅在未安裝資源插件時才使用linkGenerator

Closure resource = { attrs -> 
    if (!attrs.pluginContextPath && pageScope.pluginContextPath) { 
     attrs.pluginContextPath = pageScope.pluginContextPath 
    } 
    // Use resources plugin if present, but only if file is specified - resources require files 
    // But users often need to link to a folder just using dir 
    return ((hasResourceProcessor && attrs.file) ? r.resource(attrs) : linkGenerator.resource(attrs)) 
} 

因此,這可能是您的鏈接沒有靜態路徑的原因。

我不認爲這是一個很好的選擇來存儲數據庫中的縮略圖的完整鏈接。如果您在結構中更改了某些內容,則需要更新所有鏈接。您可以存儲縮略圖的名稱(或使用慣例),並在TagLib中生成鏈接,該鏈接將負責顯示它們。

在TagLib中,您只需使用g:resource即可創建正確的url。

+0

好主意,我認爲使用一個約定,然後在taglib中生成鏈接是要走的路。 – Sitati