如何在jsf数据表中打印List内的LinkedHashMap?

时间:2011-02-15 14:42:37

标签: jsf el

我可以打印item.srNor,但我无法打印item.details(详细信息为LinkedHashMap

我的.xhtml文件(jsf)中有以下数据表

<h:dataTable id="dt1" value="#{Handler.List}" var="item">

    <h:column>
        <f:facet name="header">
            <h:outputText value="column1" />
        </f:facet>
        <h:outputText value="#{item.srNor}"></h:outputText>
    </h:column>

    <h:column>
        <f:facet name="header">
            <h:outputText value="column2" />
        </f:facet>
        <h:outputText value=""></h:outputText>
    </h:column>

    <h:column>
        <f:facet name="header">
            <h:outputText value="column3" />
        </f:facet>
        <h:outputText value=""></h:outputText>
    </h:column>

    <h:column>
        <f:facet name="header">
            <h:outputText value="column4" />
        </f:facet>
        <h:outputText value=""></h:outputText>
    </h:column>


    <f:facet name="footer">
        <h:outputText value="End" />
    </f:facet>

</h:dataTable>

我的java类中的List是一个数组列表。

对此的任何建议都会非常有用。

由于

1 个答案:

答案 0 :(得分:1)

我了解#{item.details}会返回Map。您可以通过EL中的关联映射键访问Map值,如下所示:

#{item.details.somekey}

这解决了item.getDetails().get("somekey")

的问题

如果键本身包含保留的EL字符,如点和连字符,那么您也可以使用括号表示法:

#{item.details['some.key']}

这解析为item.getDetails().get("some.key")

或者如果要从另一个变量获取密钥本身,则使用不带引号的括号表示法

#{item.details[otherbean.key]}

这解析为item.getDetails().get(otherbean.getKey())