Как передать аргумент ArrayList / lists / iterables в пользовательские компоненты JSF1.2 - PullRequest
3 голосов
/ 18 апреля 2011

Я пытаюсь показать список изображений из моего боба который имеет функцию

public getImgList(){
    return ArrayList<string>imgPathList;
}

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

[image][image][image]

Что невозможно, если я использую <h:datatable>, потому что он отобразит их всех по одному в строке, И я не могу найти какой-либо метод, с помощью которого я могу сделать их используя пользовательский компонент, так как мне нужно будет передать список изображений в нестандартные компоненты. Кто-нибудь может объяснить, как передать список пользовательскому компоненту в JSF 1.2 Mojarra?

1 Ответ

5 голосов
/ 18 апреля 2011

Просто укажите его как атрибут.

<my:component value="#{bean.imagePaths}" />

Он будет доступен как тот же тип в свойстве value класса пользовательских компонентов с помощью UIComponent#getValueExpression().


Учитывая тот факт, что вы уже задаете этот тривиальный вопрос, я думаю, что разработка пользовательского компонента займет у вас много времени. Кроме того, поскольку множество решений уже существует, вы в основном изобретаете колесо здесь. Я бы предложил выбрать другой маршрут, а именно, просто используя существующие теги / компоненты. Есть два варианта:

  • Использовать JSTL <c:forEach>. Это будет работать, если вы не поместите его в другой итеративный компонент, такой как <h:dataTable>, и не будете отображать входные элементы в цикле.

    <c:forEach items="#{bean.imagePaths}" var="imagePath">
        <img src="#{imagePath}" />
    </c:forEach>
    
  • Используйте стороннюю библиотеку компонентов, которая предлагает полноценный итеративный компонент JSF, который не отображает HTML. Я бы предложил Томагавк <t:dataList>.

    <t:dataList value="#{bean.imagePaths}" var="imagePath">
        <img src="#{imagePath}" />
    </t:dataList>
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...