2014-12-03 162 views
0

我用來顯示多個圖片,因此我使用了each。現在我只需要顯示上次上傳的圖片。我應該如何更改我的代碼?Grails-如何顯示上次上傳的圖片?

<g:each in ="${statusMessage?.fetchProductPictureUrls() }" var="picture"> 
    <div class="feed-picture"> 
    <div class="fl"> 
     <img class="single" src="${picture }" alt="Product Picture"> 
    </div> 
    </div> 
</g:each> 
+0

如何將圖像存儲在數據庫或文件系統中? – emilan 2014-12-03 13:33:51

回答

0

您可以通過多種方式做到這一點,這裏有2:

1 - 在你的控制器,服務或演示,並在過濾器所需要的圖像您.gsp你只需要訪問你的形象變化。

2 - 使用標籤庫來做到這一點(未測試):

class LastImageTagLib { 
    static namespace = "last" 

    def image = { attr -> 
     //filter your image 
     def lastImage = attr.images.last() 

     out << "<img class='single' src='${lastImage}' alt='Product Picture'>" 
    } 
} 

而在你.gsp:

<div class="feed-picture"> 
    <div class="fl"> 
     <last:image images="${statusMessage?.fetchProductPictureUrls()}" /> 
    </div> 
</div> 

我覺得第一個選項是更好的。

+0

@ vcarvalho- fetchProductPictureUrls()返回用戶加載的圖片列表。我不能扭轉這個「Product Picture」或類似的東西嗎? – 2014-12-03 15:01:30

+0

如果它是一個有序列表,那麼是的,你可以使用'src =「$ {statusMessage?.fetchProductPictureUrls()[size-1]}」'或'src =「$ {statusMessage?.fetchProductPictureUrls()。last() }「' – Victor 2014-12-03 15:06:17

+0

@ vcarvalho - 由於某種原因它只適用於?之前的「最後」 - 任何想法爲什麼? – 2014-12-03 16:05:44

0

因此,繼續上面的代碼,我不確定列表「fetchProductPicturesUrls」是否排序。

如果是這樣,你有幾個選項。

您可以通過利用.last()方法來獲取列表的最後一個條目。 http://groovy.codehaus.org/groovy-jdk/java/util/List.html

OR

你可以抓住列表的大小,並通過在您的foreach循環設置標誌狀態跟蹤計數。 http://grails.org/doc/latest/ref/Tags/each.html

建議: 我建議將圖像存儲在磁盤或雲中,並將它們存儲在數據庫中。

維護這些圖像的好方法是創建一個域。這裏是我用於S3圖像的示例。

class S3Image { 

Date dateCreated 
Date lastUpdated 
String imageUrl 
String imageName 

static constraints = { 
    imageUrl(blank:false) 
    imageName(blank:false) 
} 
}