我有一个扩展它的类和子类。像这样:
@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。
答案 0 :(得分:1)
当表达式语言尝试解析litterBox
实例上的TigerCat
属性时,它将抛出异常。
请参阅EL specification中的BeanELResolver
文档:
getValue(ELContext, Object, Object)
其他文件已被删除......
如果找不到属性或不可读,则抛出PropertyNotFoundException。
这是预期的行为。
答案 1 :(得分:0)
是的,这是可能的,这是正确的行为。
EL解析器如何在'TigerCat'上解析litterBox
?如果将TigerCat和DomesticCat都添加到列表cats
中,则会在遇到TigerCat时抛出异常。
如果你把一只狗放在带有猫的列表中并且放入value =“dog.bark”你不会期望同样的行为吗?