Datatable для отображения карты объектов ArrayList в Tomahawk

Я хочу отобразить Map<Integer, ArrayList<ObjectBO>> в Datatable в Tomahawk. Я пробовал некоторые возможные решения, но ничего не работает.

<h:panelGrid style="font-family:verdana;font-size:12pt;color:white" columns="1">
    <h:outputText value="Choice 1"></h:outputText>
    <t:dataTable newspaperColumns="1" value="#{startupBean.choiceKeys}" newspaperOrientation="horizontal" var="key">
        <t:column>    
            <h:outputText style="font-family:verdana;font-size:10pt;color:white" value="#{choiceMap[key].ObjectBO.displayName}"/>
        </t:column>
        <t:column>     
            <h:graphicImage width="50" height="50" id="choice" alt="jsf-sun" url="#{choiceMap[Key].ObjectBO.color_url}" value="#{choiceMap[Key].ObjectBO.color_url}"> 
            </h:graphicImage>  
        </t:column> 
    </t:dataTable>
</h:panelGrid>

Поддерживающая часть боба это

public List<Integer> getChoiceKeys() {
    System.out.println("in keys");
    List<Integer> keys = new ArrayList<Integer>();
    keys.addAll(choiceMap.keySet());
    System.out.println("keys " + keys.size());
    return keys;
}

Пожалуйста, дайте мне знать, как пройти через карту через Datatable.


person Jane    schedule 28.08.2012    source источник


Ответы (1)


Числа в EL обрабатываются как Long. В вашем коде key в #{choiceMap[key]} обрабатывается как Long, и, следовательно, ключ карты никогда не совпадает, поскольку Integer не является экземпляром Long. Этот подход будет работать, если вы используете Long вместо Integer в качестве ключа карты.

person BalusC    schedule 29.08.2012
comment
Спасибо BalusC! Вчера я перешел по ссылке ниже, и это сработало. nitinbksc.wordpress.com/2012/03/23/java -map-in-jsf Я не мог ответить на свой вопрос в течение 8 часов. Так и не смог обновить пост. - person Jane; 29.08.2012
comment
Пожалуйста. Действительно, преобразование Map<K, V> в List<Map.Entry<K, V>> — это другой способ достижения конкретного функционального требования отображения Map в <h:dataTable>. - person BalusC; 29.08.2012