JSTL ile bir koleksiyonun boyutunu nasıl kontrol edebilirim?
Gibi bir şey:
<c:if test="${companies.size() > 0}">
</c:if>
JSTL ile bir koleksiyonun boyutunu nasıl kontrol edebilirim?
Gibi bir şey:
<c:if test="${companies.size() > 0}">
</c:if>
Yanıtlar:
<c:if test="${companies.size() > 0}">
</c:if>
Bu sözdizimi yalnızca EL 2.2 veya daha yenisinde çalışır (Servlet 3.0 / JSP 2.2 veya daha yenisi). JSP yerine JSPX veya Facelets kullandığınız için XML ayrıştırma hatasıyla karşılaşıyorsanız, gt
yerine kullanın >
.
<c:if test="${companies.size() gt 0}">
</c:if>
Aslında bir EL ayrıştırma hatasıyla karşılaşıyorsanız, muhtemelen çok eski bir EL sürümü kullanıyorsunuzdur. fn:length()
O zaman JSTL fonksiyonuna ihtiyacınız olacak . Gönderen belgeler :
length (java.lang.Object) - Bir koleksiyondaki öğe sayısını veya bir dizedeki karakter sayısını döndürür.
Ad alanına izin vermek için bunu JSP sayfasının en üstüne yerleştirin fn
:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Veya JSPX veya Facelets kullanıyorsanız:
<... xmlns:fn="http://java.sun.com/jsp/jstl/functions">
Sayfanızda şöyle kullanın:
<p>The length of the companies collection is: ${fn:length(companies)}</p>
Bir koleksiyonun uzunluğunu test etmek için:
<c:if test="${fn:length(companies) gt 0}">
</c:if>
Alternatif olarak, bu özel durum için EL empty
operatörünü de kullanabilirsiniz :
<c:if test="${not empty companies}">
</c:if>
@Joel ve @Mark Chorley tarafından daha önceki yorumlarda önerildiği gibi:
${empty companies}
Bu, boş ve boş listeleri / koleksiyonları / dizileri kontrol eder. Size uzunluk kazandırmaz ama OP'deki örneği karşılar. Eğer onunla kurtulabilirseniz, bu sadece bir etiket kütüphanesini ve onun huysuz sözdizimini içe aktarmaktan daha temizdir gt
.
Bu şekilde kullanabilirsiniz
${fn:length(numList)}
${fn:length(companies) > 0}
boyutunu kontrol etmek için kullanın . Bu bir boole döndürür