Возвращение списка изображений на странице JSF - PullRequest
4 голосов
/ 21 августа 2010

У меня есть выпадающий список элементов, из которых пользователь может выбрать (представление - JSF). Я хотел бы, чтобы изображение появлялось на той же странице JSF после того, как пользователь выбирает элемент из раскрывающегося списка (то есть пользователь выбирает слово "Cat" из раскрывающегося списка, и появляется группа различных изображений кошек)

Как бы я кодировал это в JSF?

Примечание * Я использую JSF 2.0 с лицевыми панелями, а не JSP.

Ответы [ 2 ]

1 голос
/ 21 августа 2010

Укажите список с URL-адресами изображений в раскрывающемся списке и используйте h:graphicImage для отображения изображения на выбранном URL-адресе.Затем используйте f:ajax для повторной визуализации изображения при изменении раскрывающегося списка.

Вот пример запуска:

<h:form>
    <h:selectOneMenu value="#{bean.imageURL}">
        <f:selectItems value="#{bean.imageURLs}" />
        <f:ajax event="change" render="image" />
    </h:selectOneMenu>
    <h:graphicImage id="image" value="#{bean.imageURL}" /> 
</h:form>

Bean:

private List<String> imageURLs; // +getter
private String imageURL; // +getter +setter
0 голосов
/ 21 августа 2010

Ответ BalusC (как всегда :) правильный, но, как вы заметили, в selectOneMenu будет список URL-адресов. Именно поэтому я спросил вас, как вы храните свои изображения. Как я обычно это делаю: (и из того, что я знаю, это стандартный способ сделать это, надеюсь, кто-то исправит меня, если я ошибаюсь), вы сохраняете изображение где-то на сервере, а в своей БД вы сохраняете его местоположение. Вот почему я бы предложил создать класс MyImage (который будет сопоставлен с таблицей БД), в котором вы будете хранить имя изображения и способ получить его местоположение на сервере (например, вы можете сделать это с помощью пространств имен, таких как кошки). будет иметь String namespace = "cats" и String imageName и метод, который будет возвращать URL-адрес, например String getImageLocation() {return "<a href="http://something.com/images/" rel="nofollow noreferrer">http://something.com/images/</a>"+namespace+"/"+imageName;}, помните, что важно, чтобы он выглядел как получатель, чтобы JSF мог его использовать). Тогда все, что вам нужно сделать, это получить список MyImages для данного пространства имен из вашей БД и отобразить изображения в dataTable, что-то вроде этого:

<h:dataTable value="#{myBeanWithAListOfImages.images}" var="img">
    <h:column>
        <h:graphicImage value="img.imageLocation"/>
    </h:column>
</h:dataTable>

Где изображения List<MyImage>. Это должно работать и печатать изображения в одном столбце.

...