为什么我不能使用动态键(jsp,jstl,el)访问HashMap的值?

问题描述 投票:0回答:1

对不起,我知道这似乎与其他问题相似,但是我仍然无法解决问题。

我将LinkedHashMap<Long,ExperimentMetadata> metadata设置为会话属性。 (ExperimentMetadata是一个Javabean。)我想从其键为参数metadata_key的特定bean中获取一个属性。但是当我尝试直接获得此信息时,例如

<c:out value="${metadata[param.metadata_key].name}" />

结果为空白。

但是,当我遍历整个地图时,它可以很好地工作,例如

<c:forEach items="${metadata}" var="exp">
    <c:if test="${exp.key eq param.metadata_key}">
        <c:out value="${exp.value.name}" />
    </c:if>
</c:forEach>

我可以这样做,但这有点违反了使用哈希图的目的。如果我这样做也可以使用

<c:out value="${metadata[1].name}" />

任何人都可以帮助建议问题所在以及如何解决?谢谢!

jsp jstl el linkedhashmap
1个回答
0
投票

嘿,我刚想通!我认为,因为metadata_key是一个参数,所以EL会将其读取为字符串,而不是很长的时间。强迫它考虑数字使它起作用,例如

<c:out value="${metadata[param.metadata_key*1].name}" />

我感到非常自豪。 ;)

© www.soinside.com 2019 - 2024. All rights reserved.