2011-07-12 68 views
5

我有一個ParentBean類,它有@ManagedBean註釋。如果我繼承這個類,ChildBean不會繼承@ManagedBean註釋,儘管@ManagedBean註釋具有元註釋InheritedJSF 2 - @ManagedBean未檢測到

我錯過了什麼?

 
JSF 2.0 
Mojarra 2.0.6 | JBoss 5.1.0.GA 
Eclipse Indigo - Build id: 20110615-0604 

編輯:還在尋找一個解決方案...

回答

4

閱讀本question,讀一點點從鑽嘴魚科的源代碼(見question)後,我想鑽嘴魚科實際上可能沒有徹底掃描(爲加載性能)的類。

所以我的猜測是,對於一個給定的類,Mojarra AnnotationScanner停留在這個類,它不會掃描這個類的層次結構。

這就是爲什麼我的ChildBean未被識別爲ManagedBean

6

javax.annotation.ManagedBean沒有@Inheritedjavax.faces.ManagedBean有。檢查你的進口。

此外,我不會依賴於此。我沒有看到它在規範中定義,但通常與jsf託管bean的繼承是一個壞主意。即使你擁有它,你也應該擁有一個抽象基類,它擁有通用的功能,但它本身不是一個託管的bean。

另一件事 - 如果您在bean上沒有註釋,稍後閱讀代碼會更困難。直到讀者意識到它被繼承,可能需要一段時間。

因此在每個bean上放上@ManagedBean,並且不要過度使用繼承。

+0

對不起,我犯了一個錯誤。我使用'javax.faces.bean.ManagedBean'。這一個不是遺傳的。 – Stephan

+0

我沒有收到評論。 – Bozho

+1

我正在使用'javax.faces.bean.ManagedBean'來註釋'ParentBean'。 'ChildBean'不會繼承這個註解。 – Stephan