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



抱歉,我知道这似乎与其他问题相似,但我仍然无法找到解决方案。

我有一个设置为会话属性的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}" />

任何人都可以帮助建议问题是什么以及如何解决它吗? 谢谢!

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

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

我感到非常自豪。 ;)

最新更新