2017-07-08 3 views
0

Ich habe ein Objekt, das einen Dienstanbieter darstellt. In diesem Objekt habe ich diese hashmapEdit hashmap in JSF oder Primefaces Datentabelle

private Map<MetaDataKeys, String> metaData; 

Die „MetaDatatKeys“ ist ein Enum, die so aussieht,

public enum MetaDataKeys { 
    PROVIDER_NAME, PROVIDER_CONTACT_NAME, PROVIDER_SERVICE_RADIUS; 
} 

Ich möchte die hashmap Schlüssel/Wert-Paare in einer Datentabelle oder ähnliches angezeigt werden für Bearbeitung, etwas entlang der Linien von

  <p:dataTable id="providerDatatable" var="infoMap" value="#{editUserBean.editUser.metaData}"> 
       <p:column><h:outputText value="#{infoMap.key.metaData}"/></p:column> 
       <p:column><h:inputText value="#{infoMap.key.value}"/></p:column> 
      </p:dataTable> 

In meinem Backing Bean „editUser“ ist das Objekt, das die Karte enthält.

Was ist der beste Weg, um darüber zu gehen? Es ist mir nicht gelungen, den Tisch sogar mit Werten zu rendern und zu bevölkern. Bei der Suche verwenden die meisten Beispiele eine Zeichenfolge oder ein Primitiv für den Schlüssel.

Antwort

1

Sie sollten Iteration in der Datentabelle von Map.entrySet() machen es ist besser Weg. Wenn Sie versuchen, Iteration durch Map.keySet() zu tun und dann Wert durch Schlüssel nehmen, können Sie O (n^2) nehmen.

Für Ihre Aufgabe Realisierung wie folgt aussieht:

<p:dataTable id="providerDatatable" var="infoMap" value="#{editUserBean.editUser.metaData.entrySet()}"> 
    <p:column><h:outputText value="#{infoMap.key}"/></p:column> 
    <p:column><h:inputText value="#{infoMap.value}"/></p:column> 
</p:dataTable> 

bearbeiten Tabellenzeile Sie Sie p:cellEditor weitere Informationen über diese Komponente verwenden, können Sie in der Primefaces show case

+0

Genau das, was ich brauchte finden können, danke! – JHRS

Verwandte Themen