Проверка, содержит ли карта ключ
Я пытаюсь установить значение в списке, который зависит от того, если карта (которую я перенаправляю из контроллера Spring) содержит ключ, который является идентификатором пользователя. Мой код выглядит так:
<%@ 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
всегда ложно. Я проверил, что если задано реальное значение идентификатора пользователя (например, 1), то я получаю правильный результат. Ты хоть представляешь, что я делаю не так?
1 ответ
<c:if test="${entry.key != user.id}">
Конечно, вы имеете в виду
<c:if test="${entry.key == user.id}">
Но вам не нужно повторять карту. Просто используйте containsKey()
,