通过EL中的动态键获取HashMap值

时间:2015-02-18 14:10:26

标签: jsf hashmap el

我有一个数据表,其中包含" Package"对象和2列(packageBarcode和地址)。我需要添加一个列(包中的字母总数),但该值不在对象中。这就是为什么,我使用了HashMap。我在这个HashMap中映射了packageId和totalNumberOfLetters。我想在dataTable中显示这些值。我怎么能这样做?

<p:column headerText="package" 
          sortBy="#{package.barcode}" 
          filterBy="#{package.barcode}"  
          > 
     <h:outputText value="#{package.barcode}" /> 

</p:column> 

1 个答案:

答案 0 :(得分:4)

提供

private List<Package> packages;
private Map<Long, Integer> totalNumberOfLettersByPackageId;

您可以按以下方式访问

<h:dataTable value="#{bean.packages}" var="_package">
    <h:column>#{bean.totalNumberOfLettersByPackageId[_package.id]}</h:column>
</h:dataTable>

请注意我将package加上_前缀,因为package是一个Java文字,一个理智的EL实现会在其上抛出一个运行时异常。