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 gt
sebaliknya >
.
<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 fn
namespace:
<%@ 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 empty
operator 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