2012-11-01 58 views
0

我在primefaces小部件一樣的inputText顯示的HashMap的內容,selectOneMenu用於等等等等顯示HashMap的數據

我已經定義hasmaps

private Map<String, String> subIdMap = new HashMap<String, String>(); 
    private Map<String, Map<String, String>> dataMap = new HashMap<String, Map<String, String>>(); 

//他們的getter和掙扎setter方法。

SubIdMap包含鍵和值

爲ID 001

private Map<String, String> subIdMap = new HashMap<String, String>(); 
subIdMap.put("id", "001"); 
subIdMap.put("name", "Alexender"); 
subIdMap.put("age", "24"); 
subIdMap.put("sex", "Male"); 
subIdMap.put("country", "Greece"); 

爲ID = 002

private Map<String, String> subIdMap = new HashMap<String, String>(); 

subIdMap.put("id", "002"); 
subIdMap.put("name", "John"); 
subIdMap.put("age", "25"); 
subIdMap.put("sex", "Male"); 
subIdMap.put("country", "US"); 

數據圖是一個圖,其公頃的ID的密鑰和subIdMap因爲它們的值

private Map<String, Map<String, String>> dataMap = new HashMap<String, Map<String, String>>(); 

dataMap.put("001", subIdMap); 
or 
dataMap.put("002", subIdMap); 

我有一個頁面,如果用戶點擊ID 001,它會得到數據的ID = 001或從豆類和顯示在XHTML ID = 002頁面和。我不能夠以顯示領域,從地圖數據XHTML頁面

片段

@ManagedBean(name = "sampleBean") 
    @ViewScoped 
    public class SampleBean implements Serializable{ 

    private Map<String, String> subIdMap = new HashMap<String, String>(); 
    private Map<String, Map<String, String>> dataMap = new HashMap<String, Map<String, String>>(); 

public SampleBean() { 

subIdMap.put("id", "001"); 
subIdMap.put("name", "Alexender"); 
subIdMap.put("age", "24"); 
subIdMap.put("sex", "Male"); 
subIdMap.put("country", "Greece"); 

dataMap.put("001",subIdMap); 

    } 


    /** 
     * @return the subIdMap 
     */ 
     public Map<String, String> getSubIdMap() { 
      return subIdMap; 
     } 

     /** 
     * @param subIdMap the subIdMap to set 
     */ 
     public void setSubIdMap(Map<String, String> subIdMap) { 
      this.subIdMap = subIdMap; 
     } 

    /** 
     * @return the dataMap 
     */ 
     public Map<String, Map<String, String>> getDataMap() { 
      return dataMap; 
     } 

     /** 
     * @param dataMap the dataMap to set 
     */ 
     public void setDataMap(Map<String, Map<String, String>> dataMap) { 
      this.dataMap = dataMap; 
     } 

    } 

XHTML頁面

<p:inputText id="textId" value="............." /> 

<p:selectOneMenu id="selectId" value="................" /> 

我需要在這裏的一些方向。

+0

指出這可能會幫助你http://www.primefaces.org/showcase-labs/ui/pprSelect.jsf – Swarne27

+0

我建議你運行[DAO教程 - 數據層](http:// balusc。 blogspot.com/2008/07/dao-tutorial-data-layer.html)。 –

回答

0

你可以逃脫它在常規EL在

value = "#{yourBean.map.firstKey.nestedKey}" 

但我必須說,不建議你的設計。完全一樣。每個實體的地圖地圖?如果你只是將所有的數據封裝在一個類中,你的工作將會變得更加簡單。

3

要解決你的問題,你的bean添加一個get方法從地圖得到了KeySet像

public List getKeyList() { 
     return new ArrayList(dataMap.keySet()); 
} 

然後把重複的標籤在JSF頁面進行迭代,並顯示鍵

<ui:repeat value="#{newJSFManagedBean.keyList}" var="key"> 
      Key : <h:outputText value="#{key}"/> 
</ui:repeat> 

但我建議創建一個名爲Person的簡單類,並將值保留在那裏,然後簡單地使用如

private Map<String, Person> dataMap = new HashMap(); 

希望你能繼續。

+0

只是根本不使用地圖。 [DAO教程 - 數據層](http://balusc.blogspot。com/2008/07/dao-tutorial-data-layer.html) –

+0

@akoskm可以,希望他能。 – vels4j

+0

當然可以。有一堆這樣的解決方案的帖子。我的意思是他不應該爲了這種目的而使用地圖,比如實體查找。我認爲這是錯誤的方式,也許你應該在你的帖子中提到,像kolossus在下面做的那樣。實體地圖的地圖... –