我创建一个这样的复合组件:
<cc:interface>
<cc:attribute name="value"
required="true" />
<cc:attribute name="rendered"
displayName="True to render"
default="true" />
</cc:interface>
当我调用此组件时,我收到一个IllegalArgumentException。我可以将呈现的名称更改为其他名称(例如 doIt ),然后它可以工作。
是否以某种方式保留了呈现的属性?我希望复合组件看起来像“常规” JSF组件。
这是莫哈拉(Mojarra)的事。
最佳答案
复合组件扩展了 UINamingContainer
,这又扩展了 UIComponentBase
,后者又已经定义了id
和rendered
属性。您不需要自己指定它们。只需删除<cc:attribute name="rendered">
即可。如果您在复合组件标签上指定rendered
属性,那么它将被解释并应用于复合组件本身。
如果打算渲染复合 Material 的特定子代,则最好发明一个不同的属性名称。例如,renderSomeChild
。
关于jsf-2 - 为什么复合组件的 “rendered”属性会引发IllegalArgumentException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8106410/