Access the size of a collection in JSP/JSTL/EL

Drew Wills picture Drew Wills · Aug 26, 2010 · Viewed 34k times · Source

I have a List variable called services in my JSP page. I need to add some markup to the page if there's more than 1 element in the list.

What I'd like to do is...

<c:if test="${services.size() gt 1}">
  <!-- markup... -->
</c:if>

But you can't invoke methods on Java objects in EL (I think this is perhaps the 364823782 time I've regretted that fact). You can only access getters on Java objects by dropping the 'get,' e.g. ${user.name} for a User class that has a getName() method.

What's the right way to evaluate this test?

Answer

Thorbj&#248;rn Ravn Andersen picture Thorbjørn Ravn Andersen · Aug 26, 2010

You are looking for fn:length(services). Remember to define the fn namespace.

http://download.oracle.com/javaee/5/tutorial/doc/bnalg.html