JSTL로 컬렉션 크기 확인


234

JSTL로 컬렉션의 크기를 어떻게 확인할 수 있습니까?

다음과 같은 것 :

<c:if test="${companies.size() > 0}">

</c:if>

답변:


430
<c:if test="${companies.size() > 0}">

</c:if>

이 구문은 EL 2.2 이상 (Servlet 3.0 / JSP 2.2 이상)에서만 작동합니다. 당신이 JSPX 또는 Facelets의 대신 JSP를 사용하고 있기 때문에 당신이 XML 구문 분석 오류에 직면하는 경우, 다음 사용하는 gt대신 >.

<c:if test="${companies.size() gt 0}">

</c:if>

실제로 EL 구문 분석 오류가 발생하면 아마도 너무 오래된 EL 버전을 사용하고있을 것입니다. 그러면 JSTL fn:length()함수 가 필요합니다 . 에서 문서 :

length (java.lang.Object) -컬렉션의 항목 수 또는 문자열의 문자 수를 반환합니다.

fn네임 스페이스 를 허용하려면 이것을 JSP 페이지 맨 위에 놓으십시오 .

<%@ 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>

또는이 특정한 경우에는 간단하게 EL empty연산자 를 사용할 수도 있습니다 .

<c:if test="${not empty companies}">

</c:if>

47
크기를 가져와야 할 필요가있는 경우 컬렉션이 비어 있지 않은지 확인해야하는 경우 "빈"연산자가 null인지 확인하기 때문에 유용합니다.
Joel

여기에 마크에 동의합니다. 하나의 태그에 대해 더 많은 페이지를 가져와야하는 이유는 무엇입니까? Mark의 솔루션을 사용하십시오. 더 깨끗합니다.
ResourceReaper

동의 함-비어 있음이 더 깨끗합니다. @Joel은 전체 답변으로 게시하여 투표하고 수락 할 수 있습니다. 우리 중 많은 사람들이 jsp가 아닌 프로그래머가 우리가 보는 첫 번째 코드를 넘어서지 않고 Google과 SO의 스 니펫을 함께 복사 / 붙여 넣는 것입니다.
Josh

9
OP는 크기가 비어 있는지 확인하는 것이 아니라 크기 확인에 대해 물었고, 내 대답은 사용 가능한 전체 태그 라이브러리로 더 복잡한 시나리오를 고려할 수도 있습니다.
Martlark

회사는 매개 변수가 아닌 var이어야합니다. 그렇지 않으면 ATG의 경우이를 정의해야합니다. <dsp : getvalueof var = "companies"param = "arrayParam"/>
Andriy Boyko

30

이전 의견에서 @Joel과 @Mark Chorley가 제안한 바와 같이 :

${empty companies}

null 및 빈 목록 / 컬렉션 / 배열을 확인합니다. 길이는 얻지 못하지만 OP의 예를 충족시킵니다. 그것으로 벗어날 수 있다면 태그 라이브러리와 같은 완고한 구문을 가져 오는 것보다 더 깨끗합니다 gt.



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.