为什么复合组件"呈现"属性会抛出IllegalArgument异常?

Ala*_*ect 6 facelets composite-component jsf-2

我创建一个这样的复合组件:

<cc:interface>        
    <cc:attribute name="value" 
                  required="true" />
    <cc:attribute name="rendered"
                  displayName="True to render"
                  default="true" />
</cc:interface>
Run Code Online (Sandbox Code Playgroud)

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

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

这是Mojarra.

Bal*_*usC 14

复合材料部件延长UINamingContainer而这又延长UIComponentBase而这又已经 definies的idrendered属性.您无需自己指定它们.只需删除<cc:attribute name="rendered">.如果rendered在复合组件标记上指定属性,则它将被解释并应用于复合组件本身.

如果您为渲染复合体的特定子元素而进行缩放,则可以更好地创建不同的属性名称.例如,renderSomeChild.

  • 尽管你的答案很有意义,它在Eclipse中也有同样的问题:我自己的组合组件的"rendered"属性加下划线并标记为未知元素.JSF 2.1.24,Eclipse 3.7.2与JBOSS JSF工具. (2认同)