web-dev-qa-db-fra.com

Affichage des clés et des valeurs Hashmap dans un DataTable primefaces

J'essaie d'afficher un Hashmap dans un DataTable, voici ce que j'essaie de faire: je vais avoir un menu de sélection de certains produits, et un texte d'entrée pour la quantité, un bouton d'ajout "ajaxified" qui ajoute le produit et sa quantité à la carte et un bouton d'envoi qui affiche une boîte de dialogue récapitulative contenant un DataTable avec deux colonnes: Nom du produit et Quantité. mon Hashmap est

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

pour le bouton ajaxified et toutes ces premières étapes, ils fonctionnent pour moi, j'ai tout réglé et la carte remplie correctement tout ce qui reste montre les données.

Merci d'avance.

25
snajahi

Vous créez une classe comme ceci:

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()_;
}

Ajouter une valeur datatable à la liste getProducts ()

Sinon, produit comme clé de carte puis,

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);
}

écrire une page primeface comme ça,

<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>
40
Kushan