Linguagem de Expressão JSTL acessando propriedades do objeto

Eu estava seguindo um tutorial hoje que me fez coçar a cabeça por uma hora. Considerar:

public class MyClass {
    public int getTotal() {
        amount = 100;
        return amount;
    }
}

e um trecho de um JSP:

<p>Total: ${objectOfTypeMyClass.total}</p> //object instantiated elsewhere

Em nenhum lugar do código havia uma variável de instância chamada "total"já declarado ou usado. A única referência à palavra" total "em todo o projeto (exceto no JSP) foi o métodogetTotal ().

Então, depois de algumas experiências desesperadas de última hora, parece que a Expression Language avalia$ {someObject.var} como "chame ogetVar () método dosomeObject objeto.

Eu trabalhei com este longo tutorial por mais de uma semana pensando que$ {someObject.var} estava dizendo "buscar diretamente a variável de instância salva"var" desomeObject.

Eu errei o tempo todo e minha observação está correta de que, para fazer referência a qualquer variável de instância usando EL, você deve fornecer um método getter correspondente chamadogetVarname () Onde "Varname"é o nome da variável de instância?

Além disso, o EL parece não fazer distinção entre maiúsculas e minúsculas nesse sentido. No meu exemplo acima, "total" em$ {objectOfTypeMyClass.total} é tudo em minúsculas onde o métodogetTotal () tem um "T" maiúsculo.

E enquanto estamos nisso, por que não precisamos instanciar a variável "total"? Eu acho que EL não está realmente fazendo referência a uma variável de instância ... apenas um método getter?

O que da?

questionAnswers(3)

yourAnswerToTheQuestion