Frage

Ich arbeite an einer JSP, wo ich Methoden auf dem Objekt aufrufen müssen, die von einem Bean kommen. Die vorherige Version der Webseite nicht JSTL und es funktioniert einwandfrei. Meine neue Version hat wie diese eine ein:

<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()}" />

Die Variable pageDividers ist ein List Objekt.

Ich bin der Begegnung dieses Problem: wenn ich für pageDivider Größe fragen, wird eine Ausnahme ausgelöst. Ich weiß, dass dies ein einfacher JTSL Fehler ist - was mache ich falsch

?

Die Fehlermeldung lautet:

  

Die Funktion Größe muss mit einem Präfix verwendet werden, wenn eine Standard-Namespace nicht angegeben

Wie greife oder rufen ich richtig die Methoden meines pageDividers Objekt?

War es hilfreich?

Lösung

Wenn Sie den Punktoperator für den Zugriff auf Eigenschaften in JSTL verwenden, ${pageDividers.size} (kein () erforderlich) führt zu einem Aufruf einer Methode namens getSize().
Da java.util.List eine Methode namens size() (statt getSize()) bietet werden Sie nicht in der Lage sein, die Liste Länge zuzugreifen, indem Sie diesen Code verwenden.


Um auf eine Liste Größe zuzugreifen, bietet JSTL die fn: Länge Funktion, verwendet wie

${fn:length(pageDividers)}

Beachten Sie, dass, um die fn Namespace zu verwenden, sollten Sie es wie folgt deklarieren

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

Darüber hinaus kann die gleiche Funktion mit jedem Kollektionstyp verwendet werden und mit Strings zu.

Andere Tipps

Um die Eigenschaft einer Bean zuzugreifen, die EL Sie einfach den Namen der Eigenschaft (nicht die Methode aufrufen). So kann sagen, Sie haben eine Methode namens getSize () in der Bohne dann

${pageDividers.size}

Beachten Sie nein ().

EDIT:. Sorry ... gemacht ein Fehler in der ursprünglichen Post

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top