2011-11-12 50 views
6

我創建了一個複合材料部件是這樣的:爲什麼複合組件「渲染」屬性拋出IllegalArgument異常?

<cc:interface>   
    <cc:attribute name="value" 
        required="true" /> 
    <cc:attribute name="rendered" 
        displayName="True to render" 
        default="true" /> 
</cc:interface> 

當我調用此組件,我得到一個IllegalArgumentException。我可以將呈現的名稱改爲別的東西(如doIt),然後它可以正常工作。

呈現屬性保留莫名其妙?我希望我的複合組件看起來像「常規」的JSF組件。

這是與Mojarra。

+0

未來,如果問題不是Mojarra特定的,您不需要明確標記'[mojarra]'。例如,當您嘗試使用MyFaces時,您會遇到完全相同的問題。只要在問題中提到JSF impl/version就足夠了。 – BalusC

+0

我把Mojarra放在了那裏,因爲我認爲它可能是一個Mojarra錯誤。但有一點要說。 – AlanObject

回答

13

複合部件延伸UINamingContainer這反過來延長UIComponentBase這反過來已經 definies的idrendered屬性。你不需要自己指定它們。只要刪除<cc:attribute name="rendered">。如果您在複合組件標籤上指定rendered屬性,則它將被解釋並應用於複合組件本身。

如果您將indend渲染特定組合的子元素,那麼最好發明一個不同的屬性名稱。例如,renderSomeChild

+0

在NetBeans 7.1編輯器中編輯組件時,它將**呈現**屬性視爲未由** cc:attribute **元素定義的錯誤。這是一個Netbeans的錯誤? – AlanObject

+0

對不起,我沒有真正使用Netbeans超過5分鐘。它在Eclipse中正常工作。 – BalusC

+2

儘可能多地回答您的問題,它在Eclipse中有同樣的問題:我自己的合成組件的「已渲染」屬性被加下劃線並標記爲未知元素。 JSF 2.1.24,帶有JBOSS JSF工具的Eclipse 3.7.2。 – alfonx

相關問題