2012-02-24 66 views
1

我有一個類和擴展它的子類。就像這樣:子類和JSF EL

@Table 
    @Entity 
    class Cat{ 



    class DomesticCat extends Cat{ 
     String litterBox; 

    //getter and setters 


    } 

    class TigerCat extends Cat{ 
     String huntingStyle; 

    //getter and setters 
    } 


} 

我在我的控制器豆一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

[JSF和表達式語言:綁定屬性僅當它存在時]的可能重複(http://stackoverflow.com/questions/5619183/jsf-and-expression-language-bind-property-only-when-it-存在) – McDowell 2012-02-26 10:46:56

+0

重複http://stackoverflow.com/questions/22613193/javax-el-propertynotfoundexception-when-submitting-uirepeat-with-conditionally/ – BalusC 2014-08-12 18:38:54

回答

1

當表達式語言試圖解決TigerCat實例上的litterBox屬性時,它將引發異常。

查看文檔BeanELResolverEL specification

getValue(ELContext, Object, Object)

其他文件省略掉...

如果未找到屬性或不可讀,一個PropertyNotFoundException被拋出。

這是預期的行爲。

+0

我編輯我的問題 – merveotesi 2012-02-24 22:52:11

0

是的,這是可能的,這是正確的行爲。

EL解析器如何解決'TigerCat'上的litterBox?如果將TigerCat和DomesticCat都添加到列表cats,則當它遇到TigerCat時將拋出異常。

如果你把一隻狗放在貓的名單中,並把值=「dog.bark」你不期望有同樣的行爲?

+0

我編輯我的問題 – merveotesi 2012-02-24 22:52:23