1

如果我有一些对象存储为名为 myObject 的请求属性,我可以在 JSP EL 中找到它的类型,如下所示:

${myObject['class']}

但是如果我有一个java.util.Map存储为请求属性 myMap,我把它放在我的页面中......

${myMap['class']}

...搜索地图以查找其键为“类”的条目。这是有道理的,否则我们永远无法从带有“class”键的 Map 中检索 EL 中的任何内容。

那么如何在 EL 语句中显示我的 Map 类型呢?

(而且你们中的大多数人会想问我:“你为什么在乎?”。好吧,今天我在没有互联网连接的火车上工作,我不得不java.util.HashMap在一个页面中迭代一个,我完全忘记了如何做到这一点. 所以,不能谷歌或 SO 它,我决定找出类型是什么(我知道它不是一个实际的 java.util.HashMap,Tomcat 把它变成了别的东西)所以我可以去翻找Tomcat jar 文件,看看它暴露了哪些方法,也许自己弄清楚。好吧,我无法通过 EL 找出类型。我求助于在<% %>标签中嵌入 Java。但它一直困扰着我一整天,我可以不能单独与 EL 一起发现。所以,这就是我关心的原因。它正在吞噬我。)

4

1 回答 1

1

如果您使用的是EL 2.2+,您可以简单地使用:

${myMap.getClass()}

另一种可能性是编写自定义 EL 函数或标签。在那里你可以检查对象是否是java.util.AbstractMap.

于 2013-04-10T18:35:56.653 回答