Отображение ключей и значений Hashmap в простых данных DataTable - PullRequest
23 голосов
/ 31 января 2012

Я пытаюсь отобразить Hashmap в DataTable, вот что я пытаюсь сделать: у меня будет меню выбора некоторых продуктов, и текст ввода для количества, «добавленная» кнопка добавления, которая добавляетпродукт и его количество на карте, а также кнопку отправки, которая отображает сводный диалог, содержащий DataTable с двумя столбцами: Название продукта и Количество.моя Hashmap - это

Map<Product,Integer> myMap = new HashMap<Product,Integer>();

для кнопки ajaxified и все эти первые шаги, они работают для меня, у меня все установлено, и карта заполнена правильно, все, что осталось, показывает данные.

Заранее спасибо.

1 Ответ

38 голосов
/ 31 января 2012

Вы создаете класс как это:

public class Product{
    private int id;
    private String productName;
    private int quantitiy;

    // add getters setters here
}

// add product id to map key
Map<Integer,Product> myMap = new HashMap<Integer,Product>();

public Map<Integer,Product> getProductMap() {
   return myMap;
}


public List<Product> getProducts() {
   return new ArrayList<Product>(myMap.values()_;
}

Добавить значение данных для getProducts () Список

В противном случае, продукт в качестве ключа карты,

Map<Product,Integer> myMap = new HashMap<Product,Integer>();

public List<Map.Entry<Product, Integer>> getProducts() {
    Set<Map.Entry<Product, Integer>> productSet = 
                     myMap.entrySet();
    return new ArrayList<Map.Entry<Product, Integer>>(productSet);
}

напишите простую страницу, например,

<p:dataTable value="#{productBean.products}" var="productEntry">
   <p:column>
      <h:outputText value="#{productEntry.key.productName}" />
   </p:column>
   <p:column>
       <h:outputText value="#{productEntry.value}" />
   </p:column>
</p:dataTable>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...