Bagaimana saya bisa memeriksa ukuran koleksi dengan JSTL?
Sesuatu seperti:
<c:if test="${companies.size() > 0}">
</c:if>
Bagaimana saya bisa memeriksa ukuran koleksi dengan JSTL?
Sesuatu seperti:
<c:if test="${companies.size() > 0}">
</c:if>
Jawaban:
<c:if test="${companies.size() > 0}">
</c:if>
Sintaks ini hanya berfungsi di EL 2.2 atau lebih baru (Servlet 3.0 / JSP 2.2 atau lebih baru). Jika Anda menghadapi kesalahan parsing XML karena Anda menggunakan JSPX atau Facelets alih-alih JSP, maka gunakan gtsebaliknya >.
<c:if test="${companies.size() gt 0}">
</c:if>
Jika Anda benar-benar menghadapi kesalahan penguraian EL, maka Anda mungkin menggunakan versi EL yang terlalu lama. Anda akan membutuhkan fn:length()fungsi JSTL . Dari dokumentasi :
length (java.lang.Object) - Mengembalikan jumlah item dalam koleksi, atau jumlah karakter dalam sebuah string.
Letakkan ini di bagian atas halaman JSP untuk memungkinkan fnnamespace:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Atau jika Anda menggunakan JSPX atau Facelets:
<... xmlns:fn="http://java.sun.com/jsp/jstl/functions">
Dan gunakan seperti ini di halaman Anda:
<p>The length of the companies collection is: ${fn:length(companies)}</p>
Jadi untuk menguji dengan koleksi panjang:
<c:if test="${fn:length(companies) gt 0}">
</c:if>
Atau, untuk kasus khusus ini Anda juga dapat menggunakan emptyoperator EL :
<c:if test="${not empty companies}">
</c:if>
Seperti yang disarankan oleh @ Joel dan @ Mark Chorley di komentar sebelumnya:
${empty companies}
Ini memeriksa daftar / koleksi / array nol dan kosong. Itu tidak membuat Anda panjang tetapi memenuhi contoh di OP. Jika Anda bisa lolos, ini lebih bersih daripada mengimpor tag library dan seperti sintaksisnya gt.
Anda bisa menggunakan seperti ini
${fn:length(numList)}
gunakan ${fn:length(companies) > 0}untuk memeriksa ukuran. Ini mengembalikan boolean