How do you call List.size() from a JSF 2.0 Facelets Template?
Asked Answered
C

4

9

What is the syntax for calling list.size() in a JSF 2.0 Facelets template (eg, using an h:outputText element)?

Cynthia answered 26/8, 2009 at 3:13 Comment(2)
Possible duplicate: https://mcmap.net/q/181564/-how-do-you-get-the-length-of-a-list-in-the-jsf-expression-languageStraight
@Straight - While that does contain one reasonable answer (that should work with JSF 2.0, though the answer predates it), I'm asking this question specifically to find out if there are any updates to JSF 2.0 that could affect the solution. :)Cynthia
C
23

How about this:

<h:outputText value="#{fn:length(someBean.someList)}" />

You'll need to reference the functions taglib in your JSF page (URI: http://java.sun.com/jsp/jstl/functions).

Comprehension answered 4/9, 2009 at 4:49 Comment(0)
D
7

Just try #{myBean.myList.size()}

Davey answered 27/4, 2010 at 6:40 Comment(2)
That wouldn't work with standard el. There are el extensions though (such as jboss el) that allow this notation.Obeisance
Apparently that's not the case (to my astonishment): see community.jboss.org/thread/173971Babel
F
5

It's not a problem with JSF 2.0 exactly. The JSF spec still requires a class that conforms to the bean spec. The collection classes don't do that with the .size() method. It would still have to be .getSize(). Given the need for a "standard" way to access the class values, we're not getting around that in JSF any time soon. Somebody needs to fix the collection classes.

Fundament answered 27/8, 2009 at 18:4 Comment(1)
IC... I was hoping that they had reworked the expression syntax to allow method calls. It could be abused, but it would easily work around cases like this. :) I still don't understand why the collection class designer chose to do things this way.Cynthia
D
2

Note: The exact namespace for "fn" is added like this:

<html xmlns="http://www.w3.org/1999/xhtml"
      ...
      xmlns:fn="http://java.sun.com/jsp/jstl/functions">
Darlinedarling answered 8/3, 2011 at 18:43 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.