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以降)でのみ機能します。JSPの代わりにJSPXまたはFaceletsを使用しているためにXML解析エラーが発生した場合は、のgt代わりにを使用してください>

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

</c:if>

EL解析エラーが実際に発生している場合は、おそらく古いバージョンのELを使用しています。fn:length()次に、JSTL 関数が必要になります。ドキュメントから:

length(java.lang.Object) -コレクション内のアイテム数、または文字列内の文字数を返します。

これをJSPページの上部に配置して、fn名前空間を許可します。

<%@ 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もチェックするため、「空」演算子が便利です。
ジョエル

ここでマークに同意します。1つのタグでページにクリフトをインポートするのはなぜですか?マークのソリューションを使用してください、それはよりきれいです。
ResourceReaper

同意-空はよりきれいです。@Joelは、完全な回答として投稿して、投票して受け入れられるようにする必要があります。ここにいる私たち(私)の多くは、JSP以外のプログラマーであり、GoogleとSOからスニペットを一緒にコピー/貼り付けします。
Josh

9
OPはサイズの確認について尋ねました。必ずしも空かどうかの確認についてではありません。私の回答では、利用可能な完全なタグライブラリを使用して、より複雑なシナリオを検討することもできます。
Martlark、2014年

会社はparamではなく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.