Question

Je travaille sur un JSP où je dois appeler des méthodes sur des objets provenant d'un bean. La version précédente de la page n'utilisait pas JSTL et fonctionnait correctement. Ma nouvelle version a une configuration comme celle-ci:

<jsp:useBean id="pageBean" scope="request" type="com.epicentric.page.website.PageBean" />
<c:set var="pageDividers" value="<%= pageBean.getPageDividers() %>" />
<c:set var="numColumns" value="${pageDividers.size()}" />

La variable pageDividers est un objet List .

Je rencontre ce problème: lorsque je demande la taille de pageDivider , une exception est levée. Je sais qu’il s’agit d’une simple erreur JTSL - que fais-je de travers?

Le message d'erreur est le suivant:

  

La taille de la fonction doit être utilisée avec un préfixe lorsqu'un espace de nom par défaut n'est pas spécifié

Comment accéder ou appeler correctement les méthodes de mon objet pageDividers ?

Était-ce utile?

La solution

Lors de l'utilisation de l'opérateur point pour l'accès aux propriétés dans JSTL, $ {pageDividers.size} (aucun () requis) n'entraîne un appel à une méthode nommée getSize () .
Puisque java.util.List propose une méthode appelée size () (plutôt que getSize () ), vous ne pourrez pas accéder à la longueur de la liste à l'aide de ce code.

Pour accéder à la taille d'une liste, JSTL propose la fonction fn: length , utilisée comme

.
${fn:length(pageDividers)}

Notez que pour pouvoir utiliser l'espace de noms fn , vous devez le déclarer comme suit

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

De plus, la même fonction peut être utilisée avec n’importe quel type de collection, mais aussi avec Strings.

Autres conseils

Pour accéder à la propriété d'un bean en utilisant EL, vous devez simplement nommer la propriété (sans invoquer la méthode). Alors disons que vous avez une méthode appelée getSize () dans le bean puis

${pageDividers.size}

Remarquez non ().

EDIT: Désolé ... fait une erreur dans le message d'origine.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top