2014-12-03 2 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

ответ

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> 

Я думаю, что первый вариант лучше.

+0

@ vcarvalho- the fetchProductPictureUrls() возвращает список изображений, загружаемых пользователем. Разве я не могу вырвать это «Product Picture» или что-то вроде этого? –

+0

Если это упорядоченный список, то да, вы можете использовать 'src = '$ {statusMessage? .FetchProductPictureUrls() [size-1]}" 'или' src = "$ {statusMessage ?.fetchProductPictureUrls(). Last() } "' – Victor

+0

@ vcarvalho - по какой-то причине он работает только с?. перед «последним» - любая идея, почему? –

0

Итак, перейдем к приведенному выше коду. Я не уверен, отсортирован ли список «fetchProductPicturesUrls» или нет.

Если есть, у вас есть несколько вариантов.

Вы можете захватить последнюю запись списка, используя метод .last(). http://groovy.codehaus.org/groovy-jdk/java/util/List.html

ИЛИ

Вы можете получить размер списка и отслеживать количество, установив флаг состояния в цикле Еогеасп.

Я предлагаю хранить изображения на диске или в облаке, а не хранить их в базе данных

Хорошим способом сохранить эти изображения является создание домена. Вот пример, который я использую для изображений S3.

class S3Image { 

Date dateCreated 
Date lastUpdated 
String imageUrl 
String imageName 

static constraints = { 
    imageUrl(blank:false) 
    imageName(blank:false) 
} 
}  
Смежные вопросы