我过去常常显示多张图片,因此我使用了each
。现在我只需要显示最后上传的图片。我应该如何更改我的代码?
<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 :(得分:0)
你可以通过多种方式做到这一点,这里有2:
1 - 在控制器,服务或演示者中过滤所需的图像,并在.gsp
中只需要访问图像变量。
2 - 使用tagLib执行此操作(未测试):
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>
我认为第一种选择更好。
答案 1 :(得分:0)
所以继续上面的代码我不确定列表是否&#34; fetchProductPicturesUrls&#34;是否排序。
如果是,您有几个选择。
您可以通过利用.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)
}
}