Jsf 2 为什么复合材料组件;“提供”;属性是否引发IllegalArgument异常?

Jsf 2 为什么复合材料组件;“提供”;属性是否引发IllegalArgument异常?,jsf-2,facelets,composite-component,Jsf 2,Facelets,Composite Component,我创建了一个复合组件,如下所示: <cc:interface> <cc:attribute name="value" required="true" /> <cc:attribute name="rendered" displayName="True to render" default="true" /> </c

我创建了一个复合组件,如下所示:

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

当我调用这个组件时,我得到一个IllegalArgumentException。我可以将渲染的名称更改为其他名称(如doIt),然后它就可以工作了

渲染的属性是否以某种方式保留?我希望我的复合组件看起来像“常规”JSF组件


Mojara就是这样。

复合组件依次扩展,而复合组件又依次扩展了
id
呈现的
属性。您不需要自己指定它们。只需卸下
。如果在复合组件标记上指定
rendered
属性,那么它将被解释并应用于复合组件本身


如果您打算呈现复合的特定子级,那么最好发明一个不同的属性名称。例如,
renderSomeChild

将来,如果问题不是mojarra特有的,则不需要显式标记
[mojarra]
。例如,当您尝试MyFaces时,您会遇到完全相同的问题。只要在问题中提到JSF impl/version就足够了。我把Mojarra放在那里,因为我认为它可能是一个Mojarra bug。但需要指出的是,在NetBeans 7.1编辑器中编辑组件时,如果呈现的属性未由cc:attribute元素定义,则会将其视为错误。这是一个Netbeans错误吗?对不起,我已经5分钟没有真正使用Netbeans了。在Eclipse中,这种方式工作得很好。尽管您的回答很有道理,但它在Eclipse中也有相同的问题:我自己的合成组件的“rendered”属性被加下划线并标记为未知元素。JSF2.1.24、Eclipse3.7.2和JBossJSF工具。