2
class Cat{
}

class Tiger extends Cat{
    public String getZooAddress(){
        return "cityZoo";
    };
}

Bean{
    public Cat getCat() {
        return new Tiger();
    }
}

我注意到#{bean.cat.zooAddress}实际上显示“cityZoo”。它是如何工作的?我想象这#{bean.cat}代表一只猫,并试图调用getZooAddress()会导致“找不到属性”错误。容器是否会自动进行从 Cat 到 Tiger 的向下转换?

4

1 回答 1

0

表达式语言利用反射在被引用对象上找到适当的属性访问器方法。

以下是有关表达式语言为何以这种方式工作的更多信息。

http://today.java.net/pub/a/today/2006/03/07/unified-jsp-jsf-expression-language.html#evaluation-of-el

于 2012-12-17T19:31:25.967 回答