ฉันจะตรวจสอบขนาดของคอลเลกชันด้วย JSTL ได้อย่างไร
สิ่งที่ต้องการ:
<c:if test="${companies.size() > 0}">
</c:if>
ฉันจะตรวจสอบขนาดของคอลเลกชันด้วย JSTL ได้อย่างไร
สิ่งที่ต้องการ:
<c:if test="${companies.size() > 0}">
</c:if>
คำตอบ:
<c:if test="${companies.size() > 0}">
</c:if>
ไวยากรณ์นี้ใช้งานได้เฉพาะใน EL 2.2 หรือใหม่กว่า (Servlet 3.0 / JSP 2.2 หรือใหม่กว่า) หากคุณกำลังเผชิญข้อผิดพลาดในการแยกวิเคราะห์ XML เพราะคุณกำลังใช้ JSPX หรือ Facelets แทน JSP แล้วใช้แทนgt
>
<c:if test="${companies.size() gt 0}">
</c:if>
หากคุณพบข้อผิดพลาดในการแยกวิเคราะห์ EL จริง ๆ แล้วคุณอาจใช้รุ่น EL ที่เก่าเกินไป คุณจะต้องใช้fn:length()
ฟังก์ชันJSTL จากเอกสาร :
ความยาว (java.lang.Object) - ส่งคืนจำนวนรายการในคอลเลกชันหรือจำนวนอักขระในสตริง
วางสิ่งนี้ไว้ที่ด้านบนของหน้า JSP เพื่ออนุญาตfn
เนมสเปซ:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
หรือถ้าคุณใช้ JSPX หรือ Facelets:
<... xmlns:fn="http://java.sun.com/jsp/jstl/functions">
และใช้สิ่งนี้ในหน้าของคุณ:
<p>The length of the companies collection is: ${fn:length(companies)}</p>
ดังนั้นเพื่อทดสอบความยาวของคอลเลกชัน:
<c:if test="${fn:length(companies) gt 0}">
</c:if>
อีกทางเลือกหนึ่งสำหรับกรณีนี้คุณสามารถใช้empty
โอเปอเรเตอร์EL ได้ง่ายๆ:
<c:if test="${not empty companies}">
</c:if>
ตามที่แนะนำโดย @Joel และ @Mark Chorley ในความคิดเห็นก่อนหน้า:
${empty companies}
การตรวจสอบรายการ / ชุด / อาร์เรย์ที่เป็นโมฆะและว่างเปล่า มันไม่ได้รับความยาว แต่เป็นไปตามตัวอย่างใน OP gt
หากคุณสามารถรับไปกับมันนี้เป็นเพียงสะอาดกว่าการนำเข้าห้องสมุดแท็กและไวยากรณ์ดื้อเหมือน
คุณสามารถใช้สิ่งนี้
${fn:length(numList)}
ใช้${fn:length(companies) > 0}
สำหรับตรวจสอบขนาด ส่งคืนบูลีน