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

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

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

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

我已验证“值:”语句确实打印出了一些内容,但是,出现以下JSTL错误

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

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

null hashmap jstl
2个回答
0
投票

您可以做:

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)}"/>

然后,您的空支票仍然有效,您不必在哈希图中的空条目周围乱写。


0
投票

如果不是null或为空,则显示该消息,然后将其设置为空字符串,类似

<div class="msg">
    <c:if test = "${messages.un != null && !messages.un.isEmpty()}">
        <span class="error">${messages.un}</span>
        <c:set var="messages.un" scope="session" value=""/>
    </c:if>
</div>
© www.soinside.com 2019 - 2024. All rights reserved.