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?