2011-06-03 10 views
11

में हैश मैप प्रविष्टियों की प्रदर्शन कुंजी और मान प्रदर्शित करें मैं HashMap कुंजी और जेएसएफ यूआई में इसके संबंधित मान को प्रदर्शित करना चाहता हूं।जेएसएफ पेज

मैं इसे कैसे प्राप्त कर सकता हूं? मैं <h:datatable> जैसे कुछ इटरेटर घटक का उपयोग कर जेएसएफ पेज में HashMap पर कैसे पुन: प्रयास कर सकता हूं?

उत्तर

26

केवल <c:forEach>Map का समर्थन करता है। प्रत्येक पुनरावृत्ति Map.Entry उदाहरण वापस देता है (जैसे सामान्य जावा for पाश में)।

<c:forEach items="#{yourBean.map}" var="entry"> 
    <li>Key: #{entry.key}, value: #{entry.value}</li> 
</c:forEach> 

<h:dataTable> (और <ui:repeat>) केवल List का समर्थन करता है (JSF 2.2 Collection समर्थन के साथ आ जाएगा)। आप सभी कुंजियों को एक अलग List में प्रतिलिपि बना सकते हैं और फिर इसके बजाय इसे फिर से चालू कर सकते हैं और फिर ईएल में [] का उपयोग करके संबंधित मान प्राप्त करने के लिए पुनरावृत्त कुंजी का उपयोग कर सकते हैं।

private Map<String, String> map; 
private List<String> keyList; 

public void someMethodWhereMapIsCreated() { 
    map = createItSomeHow(); 
    keyList = new ArrayList<String>(map.keySet()); 
} 

public Map<String, String> getMap(){ 
    return map; 
} 

public List<String> getKeyList(){ 
    return keyList; 
} 
<h:dataTable value="#{yourBean.keyList}" var="key"> 
    <h:column> 
     Key: #{key} 
    </h:column> 
    <h:column> 
     Value: #{yourBean.map[key]} 
    </h:column> 
</h:dataTable> 

ध्यान दिया जाना चाहिए कि एक HashMap प्रकृति अव्यवस्थित कर रहा है। यदि आप List के साथ सम्मिलन आदेश को बनाए रखना चाहते हैं, तो इसके बजाय LinkedHashMap का उपयोग करें।

+0

धन्यवाद यह ठीक काम करता है ... – Sweety

+0

आपका स्वागत है :) –

+2

बलुससी द्वारा संशोधन मेरे लिए महत्वपूर्ण थे +1 BalusC – user1156544