JSTL Langage d'Expression accéder aux propriétés de l'objet

J'ai été à la suite d'un tutoriel d'aujourd'hui qui m'a fait me gratter la tête pendant une heure. Considérer:

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

et un extrait d'une page JSP:

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

Nulle part dans le code a été une variable d'instance nommée "total" jamais déclaré ni utilisé. La seule référence au mot "total" dans l'ensemble du projet (autre que dans le JSP) a été la méthode getTotal().

Après quelques désespérée ultime de l'expérimentation, il apparaît que l'Expression de la Langue évalue ${someObject.var} que "appeler le getVar() méthode de la someObject objet.

J'ai travaillé avec ce long tutoriel pour plus d'une semaine en pensant que ${someObject.var} a dit, "directement chercher les sauvés variable d'instance "var" de someObject.

Je n'ai eu mal tout le temps et est de mon observation correcte que dans le but de référencer n'importe quelle variable d'instance à l'aide de EL, vous devez fournir un correspondant de la méthode de lecture nommée getVarname() où "Varname" est le nom de la variable d'instance?

Aussi, EL semble être sensible à la casse à cet égard. Dans mon exemple ci-dessus, "total" dans ${objectOfTypeMyClass.total} est en minuscules, où la méthode getTotal() a un grand "T".

Et pendant que nous y sommes, pourquoi n'avons-nous pas besoin d'instancier la variable "total"? Je suppose que EL n'est pas fait référence à une variable d'instance...juste une méthode de lecture?

Ce qui donne?

Envisager l'enregistrement de votre compte. Votre autres est complètement découplé. Comptes non enregistrés ne peuvent être consultés et/ou réutilisés en utilisant le même PC/webbrowser tant que les cookies ne sont pas effacées.

OriginalL'auteur ChrisM | 2010-09-22