मैं प्रदर्शित करना चाहूंगा HashMap
JSF UI में कुंजियाँ और उसका संबद्ध मान।
इसे कैसे प्राप्त किया जा सकता है? मैं इस पर पुनरावृति कैसे कर सकता हूं? HashMap
जेएसएफ पृष्ठ में जैसे कुछ पुनरावृत्त घटक का उपयोग कर <h:datatable>
?
उत्तर:
उत्तर № 1 के लिए 33केवल <c:forEach>
का समर्थन करता है Map
। प्रत्येक पुनरावृत्ति एक देता है Map.Entry
उदाहरण वापस (सामान्य जावा की तरह) for
पाश)।
<c:forEach items="#{yourBean.map}" var="entry">
<li>Key: #{entry.key}, value: #{entry.value}</li>
</c:forEach>
The <h:dataTable>
(तथा <ui:repeat>
) केवल समर्थन करता है List
(JSF २.२ के साथ आ जाएगा 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
बजाय।