如何在 JSTL 中将此映射值设置为 null?

How do I set this map value to null in JSTL?

在 JSTL 中,我将 HashMap 作为页面变量。 HashMap 将字符串映射到更复杂的对象。我想将一个值设置为 null。所以我正在尝试

value: ${myMap[myId]} 
<c:set target="myMap" property="${myId}" value="${null}" />

我已经验证 "value:" 语句确实打印了一些东西,但是,我收到以下 JSTL 错误

javax.servlet.jsp.JspTagException: Invalid property in &lt;set&gt;:  "51b21a0410340adf6501db08"

关于如何将地图中的特定条目设置为 null 的任何想法?

你可以这样做:

value: ${myMap[myId]} 
<c:set target="myMap" property="${myId}" value="" />

然后在后面的代码中你可以测试它是否为空:

<c:if test="${myMap[myId] is empty}">

并避免尝试在 JSTL 中处理 "null"。

(可能)更好的选择是将其从地图中完全删除:

<c:set var="debug" value="${myMap.remove(myId)}"/>

那么你的空支票仍然有效,你不必在你的 hashmap 中处理空条目。