1. ホーム
  2. jsp

[解決済み] JSTLでコレクションサイズを確認する

2022-02-13 09:59:22

質問

JSTL でコレクションのサイズを確認するにはどうすればよいですか?

のようなものです。

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

</c:if>

解決方法は?

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

</c:if>

この構文は、EL2.2以降(Servlet3.0 / JSP2.2以降)でのみ動作します。もし、JSPの代わりにJSPXやFaceletsを使っていて、XMLのパースエラーに遭遇した場合は gt の代わりに > .

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

</c:if>

もし、実際にELのパースエラーに遭遇しているのであれば、おそらくELのバージョンが古すぎるのでしょう。その場合、JSTLが必要です。 fn:length() 関数が必要です。から ドキュメント :

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>