【问题标题】:Checking if a map contains key检查地图是否包含键
【发布时间】:2017-04-11 19:48:20
【问题描述】:

我尝试在列表上设置值,这取决于地图(我从弹簧控制器重定向)是否包含作为用户 ID 的键。我的代码如下所示:

<%@ page session="false"%>
<%@ taglib prefix="t" tagdir="/WEB-INF/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="datatables" uri="http://github.com/dandelion/datatables"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

 <datatables:table id="users" url="${datasource}" serverParams="APP.datatables.helpers.extraParamsUsersList" serverSide="true" cssClass="appDataTable" autoWidth="false" stateSave="true" row="user" paginate="true" paginationType="full_numbers" info="false" filter="true" dom="plrtip" ext="columnFilterCallback" filterPlaceholder="none" displayLength="10">
     <!-- -->
     <c:set var="result" value="false"/>
     <c:forEach var="entry" items="${boxes}">                           
        <c:if test="${entry.key != user.id}">
            <c:set var="result" value="true"/>
        </c:if>
    </c:forEach>
    <c:if test="${result}">
        <!-- some code -->
    </c:if> 
</datatables:table>

地图不是空的并且包含一些users的键但是result总是假的。我检查了如果给定用户 ID 的真实值(例如 1),那么我得到正确的结果。你知道我做错了什么吗?

【问题讨论】:

    标签: java jsp jstl dandelion


    【解决方案1】:
    <c:if test="${entry.key != user.id}">
    

    你的意思是

    <c:if test="${entry.key == user.id}">
    

    但您不需要迭代地图。只需使用containsKey()。

    【讨论】:

    • 是的,我添加了错误版本的条件,但它仍然不起作用。对不起。在我写到这里之前,我已经尝试过containsKey() 和其他解决方案(我刚才再次检查了它),但它总是返回 false。
    猜你喜欢
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 2014-01-07
    • 2021-05-09
    相关资源
    最近更新 更多