Pergunta

Estou trabalhando em um JSP onde preciso chamar métodos em objeto que vêm de um feijão. A versão anterior da página não usa o JSTL e funciona corretamente. Minha nova versão tem uma configuração assim:

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

A variável pageDividers é um List objeto.

Estou encontrando esta questão: quando peço pageDividerTamanho, uma exceção é lançada. Eu sei que este é um erro JTSL simples - o que estou fazendo de errado?

A mensagem de erro é:

O tamanho da função deve ser usado com um prefixo quando um espaço para nome padrão não é especificado

Como faço para acessar ou chamar corretamente os métodos dos meus pageDividers objeto?

Foi útil?

Solução

Ao usar o operador DOT para acesso à propriedade no JSTL, ${pageDividers.size} (não () necessários) resulta em uma chamada para um método nomeado getSize().
Desde java.util.list oferece um método chamado size() (ao invés de getSize()) Você não poderá acessar o comprimento da lista usando esse código.


Para acessar um tamanho de lista, o JSTL oferece o FN: Comprimento função, usada como

${fn:length(pageDividers)}

Observe que para usar o fn namespace, você deve declarar o seguinte

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

Além disso, a mesma função pode ser usada com qualquer tipo de coleção e também com strings.

Outras dicas

Para acessar a propriedade de um feijão usando o EL, você simplesmente nomeia a propriedade (não invoca o método). Então, digamos que você tenha um método chamado getSize () no feijão então

${pageDividers.size}

Aviso não ().

EDIT: Desculpe ... cometi um erro na postagem original.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top