子类和JSF EL

时间:2012-02-24 15:56:30

标签: jsf inheritance el

我有一个扩展它的类和子类。像这样:

 @Table
    @Entity
    class Cat{



    class DomesticCat extends Cat{
       String litterBox;

    //getter and setters


    }

    class TigerCat extends Cat{
       String huntingStyle;

    //getter and setters
    }


}

我的控制器bean中有一个List<Cat> cats。 我把它填满了

cats.add(new DomesticCat());
cats.add(new TigerCat());

我想在我的xhtml页面中写这样的东西

<ui:repeat var="cat" value="#{controller.cats}">
<outputText rendered="tried some control here, did not work" value="cat.litterBox"/>
</ui:repeat>

我收到“找不到财产”的例外情况。

有可能吗?

修改

错误的问题抱歉, 你有什么建议我一起使用扩展子类和JSF。

2 个答案:

答案 0 :(得分:1)

当表达式语言尝试解析litterBox实例上的TigerCat属性时,它将抛出异常。

请参阅EL specification中的BeanELResolver文档:

  

getValue(ELContext, Object, Object)

     

其他文件已被删除......

     

如果找不到属性或不可读,则抛出PropertyNotFoundException。

这是预期的行为。

答案 1 :(得分:0)

是的,这是可能的,这是正确的行为。

EL解析器如何在'TigerCat'上解析litterBox?如果将TigerCat和DomesticCat都添加到列表cats中,则会在遇到TigerCat时抛出异常。

如果你把一只狗放在带有猫的列表中并且放入value =“dog.bark”你不会期望同样的行为吗?