【问题标题】:Get HashMap value by dynamic key in ELEL中通过动态键获取HashMap值
【发布时间】:2015-04-19 13:49:31
【问题描述】:

我有一个数据表,其中包含“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> 

【问题讨论】:

  • 您忘记显示模型了。或者至少,您忘了告诉 EL 中的映射在哪里,以及 EL 中的映射键在哪里。例如。 #{bean.map}#{key}.
  • 您要使用&lt;p/h:dataTable&gt; 迭代java.util.Map&lt;key, value&gt; 吗?这是不支持的。您需要以某种方式将条目集包装在诸如 java.util.List 之类的集合类型周围,然后迭代该集合。见thisthis

标签: jsf hashmap el


【解决方案1】:

提供了一个

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 实现会在上面抛出一个运行时异常。

【讨论】:

    猜你喜欢
    • 2016-03-16
    • 2014-06-17
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多