Как использовать Коллекции карт с компонентом данных ICEfaces - PullRequest
1 голос
/ 15 января 2012

Я пытаюсь использовать значения в коллекции Map (независимо от того, какого типа, HashMap, TreeMap), чтобы заполнить компонент данных ICEfaces и отобразить свойства объектов. Единственные примеры, которые мне удалось найти, это те, которые просто экспортируют значения Map в коллекцию List и используют ее для заполнения таблицы данных. Однако я чувствую, что это чрезвычайно расточительно, и теперь я вынужден поддерживать две коллекции точных значений.

Поддерживает ли компонент данных даже итерацию по значениям карты? Если нет, возможно, есть ли лучший способ обойти это, чем ранее упомянутое решение?

Для любопытных я хочу использовать коллекцию карт для быстрого удаления, и она наиболее естественно подходит для моих данных (основанных на ключах).

1 Ответ

1 голос
/ 15 января 2012

Стоит попробовать:

Я нашел следующее решение: JSF: Использование данных карты в Datatable , пример в URL относится к richfaces, но, на мой взгляд, все, что вам нужно,сделать, это использовать теги IceFaces, если вы будете использовать LinkedHashMap, это может помочь вам с порядком ...

В случае, если URL-адрес испортится, вот код:

Map<String,String> myMap;

public List<String> getMapKeys(){
    List<String> ret = new ArrayList<String>();
    for (String s : myMap.keySet())
        ret.add(s);
    return ret;
}

НаСтраница JSF:

<rich:extendedDataTable value="#{myBean.mapKeys}" var="item"
    id="datatable">
    <rich:column width="190px" sortable="false" label="Map entries"
        id="labelColumn">
        <f:facet name="header">Map entries</f:facet>
        <h:outputText value="#{myBean.myMap[item]}" />
    </rich:column>
  </rich:extendedDataTable>
...