2012-07-27 57 views
1

我想在我的webflow中顯示來自我的域對象的圖像。如何在沒有執行狀態的url中在grails webflow中創建鏈接?

域對象有一個byte []數組來保存圖像。我的控制器中的「圖像」方法將圖像傳送給瀏覽器。這工作正常。

在我的Webflow我這樣做:

<img src="${createLink(controller:'shop', action:'image', id:shopInstance.id)}"> 

我可以看到在我的前端的圖像(瀏覽器),但它每次都重新加載我點擊「下一步」,或更改的Webflow我的狀態,因爲圖片網址包含一個參數,用於更改webflow中的每個事件。

所創建的圖像URL(上面的例子)看起來是這樣的:

http://localhost:8080/project/shop/image/2?execution=e2s5 

我不希望這樣的執行參數是傳遞到我的形象網址做。我怎樣才能解決這個問題?

回答

1

不知道你爲什麼得到那個執行參數,但你可以試試:<img src="${resource(dir: 'shop/image', file: shopInstance.id)}">並確保UrlMappings.groovy文件有一個映射'ship/image'到適當的控制器。

+0

謝謝!這工作! – whitenexx 2012-07-29 12:01:51

+0

很高興解決 – 2012-07-29 15:31:03

1

由於Grails的2.0.4,看看ApplicationTagLib.groovy,你可以看到

if (request['flowExecutionKey']) { 
    params."execution" = request['flowExecutionKey'] 
    urlAttrs.params = params 
    if (attrs.controller == null && attrs.action == null && attrs.url == null && attrs.uri == null) { 
     urlAttrs[LinkGenerator.ATTRIBUTE_ACTION] = GrailsWebRequest.lookup().actionName 
    } 
} 

所以Grails是強制的Webflow內呈現的每一個環節,以包括執行PARAMS。它看起來像我的bug。

2

我的猜測是這是一個錯誤。我使用的工作如下

${createLink(controller: 'controller', action: 'action').replaceAll(/\?.*$/, "")} 

這將使用正則表達式來刪除執行參數。