ejemplos java exception jsp jstl vignette

java - ejemplos de jstl



JSTL, Frijoles y llamadas a métodos (2)

Estoy trabajando en un JSP donde necesito llamar a métodos sobre objetos que provienen de un Bean. La versión anterior de la página no usa JSTL y funciona correctamente. Mi nueva versión tiene una configuración como esta:

<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 es un objeto List .

Me encuentro con este problema: cuando pageDivider el tamaño de pageDivider , se lanza una excepción. Sé que este es un error simple de JTSL: ¿qué estoy haciendo mal?

El mensaje de error es:

El tamaño de la función se debe usar con un prefijo cuando no se especifica un espacio de nombre predeterminado

¿Cómo pageDividers o llamo correctamente a los métodos de mi objeto pageDividers ?


Cuando se utiliza el operador de puntos para el acceso a propiedades en JSTL, ${pageDividers.size} (no () necesario) da como resultado una llamada a un método llamado getSize() .
Como java.util.List ofrece un método llamado size() (en lugar de getSize() ) no podrá acceder a la longitud de la lista utilizando ese código.

Para acceder a un tamaño de lista, JSTL ofrece la función fn: length , utilizada como

${fn:length(pageDividers)}

Tenga en cuenta que para usar el espacio de nombre fn , debe declararlo de la siguiente manera

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

Además, la misma función se puede usar con cualquier tipo de colección, y también con Strings.


Para acceder a la propiedad de un frijol usando EL, simplemente debe nombrar la propiedad (no invocar el método). Entonces digamos que tienes un método llamado getSize () en el bean entonces

${pageDividers.size}

Observe que no ().

EDITAR: Perdón ... cometió un error en la publicación original.