Làm cách nào tôi có thể kiểm tra kích thước của bộ sưu tập với JSTL?
Cái gì đó như:
<c:if test="${companies.size() > 0}">
</c:if>
Làm cách nào tôi có thể kiểm tra kích thước của bộ sưu tập với JSTL?
Cái gì đó như:
<c:if test="${companies.size() > 0}">
</c:if>
Câu trả lời:
<c:if test="${companies.size() > 0}">
</c:if>
Cú pháp này chỉ hoạt động trong EL 2.2 hoặc mới hơn (Servlet 3.0 / JSP 2.2 trở lên). Nếu bạn đang gặp phải một lỗi phân tích cú pháp XML vì bạn đang sử dụng JSPX hoặc Facelets thay vì JSP, thì hãy sử dụng gt
thay vì >
.
<c:if test="${companies.size() gt 0}">
</c:if>
Nếu bạn thực sự phải đối mặt với lỗi phân tích EL, thì có lẽ bạn đang sử dụng phiên bản EL quá cũ. Bạn sẽ cần fn:length()
chức năng JSTL sau đó. Từ tài liệu :
length (java.lang.Object) - Trả về số lượng mục trong bộ sưu tập hoặc số lượng ký tự trong chuỗi.
Đặt cái này ở đầu trang JSP để cho phép fn
không gian tên:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Hoặc nếu bạn đang sử dụng JSPX hoặc Facelets:
<... xmlns:fn="http://java.sun.com/jsp/jstl/functions">
Và sử dụng như thế này trong trang của bạn:
<p>The length of the companies collection is: ${fn:length(companies)}</p>
Vì vậy, để kiểm tra với độ dài của một bộ sưu tập:
<c:if test="${fn:length(companies) gt 0}">
</c:if>
Ngoài ra, đối với trường hợp cụ thể này, bạn cũng có thể chỉ cần sử dụng empty
toán tử EL :
<c:if test="${not empty companies}">
</c:if>
Theo đề xuất của @Joel và @Mark Chorley trong các bình luận trước đó:
${empty companies}
Điều này kiểm tra danh sách / bộ sưu tập / mảng rỗng và rỗng. Nó không giúp bạn có được chiều dài nhưng nó thỏa mãn ví dụ trong OP. Nếu bạn có thể thoát khỏi nó thì điều này chỉ đơn giản là nhập một thư viện thẻ và cú pháp mạnh mẽ của nó như thế nào gt
.
Bạn có thể sử dụng như thế này
${fn:length(numList)}
sử dụng ${fn:length(companies) > 0}
để kiểm tra kích thước. Điều này trả về một boolean