1

我想Map<Integer, ArrayList<ObjectBO>>在 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;
}

请让我知道如何通过数据表遍历地图。

4

1 回答 1

0

数字在 EL 中被视为Long。在您的代码中,keyin#{choiceMap[key]}被视为Long,因此映射键永远不会匹配,因为Integer它不是Long. 如果您使用Long而不是Integer作为映射键,则此方法将起作用。

于 2012-08-29T12:29:40.393 回答