2017-04-11 157 views
1

我嘗試在列表上設置值,這取決於如果映射(我從彈簧控制器重定向)映射包含用戶標識的鍵。我的代碼看起來像這樣:檢查映射是否包含密鑰

<%@ 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> 

地圖是不是空的,幷包含一些usersresult總是假鑰匙。我檢查了是否給出了用戶標識的實際值(例如1),然後我得到正確的結果。你有什麼想法我做錯了嗎?

回答

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

當然,你的意思是

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

但你並不需要遍歷地圖。只需使用containsKey()

+0

是的,我添加了我的病情的錯誤版本,但仍然無法正常工作。對不起。在我寫這裏之前,我曾嘗試過使用'containsKey()'和其他解決方案(我再次檢查它),但它總是返回false。 – joamor