Bagaimana saya bisa memeriksa ukuran koleksi dengan JSTL?
Sesuatu seperti:
<c:if test="${companies.size() > 0}">
</c:if>
sumber
Bagaimana saya bisa memeriksa ukuran koleksi dengan JSTL?
Sesuatu seperti:
<c:if test="${companies.size() > 0}">
</c:if>
<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:
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
.sumber
Anda bisa menggunakan seperti ini
sumber
gunakan
${fn:length(companies) > 0}
untuk memeriksa ukuran. Ini mengembalikan booleansumber