在JSF2中,如何知道复合组件是否有子组件?
我正在编写一个复合组件,您有一个名为:的特殊标签,
<composite:insertChildren />
它将在那里插入该组件的所有子组件。有什么方法可以知道组件是否有子组件?就像可以在“渲染”属性上使用的布尔值一样。
I'm writing a composite component, you have a special tag named:
<composite:insertChildren />
Which inserts all the component's children there. Is there any way to know whether the component has children? Like a boolean value that could go on a "rendered" attribute.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要的基本表达式如下:
#{cc.childCount}
或更详细地说:#{component.getCompositeComponentParent(component).childCount}
例如以下组合组件:
用于以下 Facelet:
将打印
Children: 2
。因此
#{cc.childCount != 0}
将告诉您复合组件是否有子组件。The basic expression you're after is the following:
#{cc.childCount}
or more elaborately:#{component.getCompositeComponentParent(component).childCount}
E.g. the following composite component:
used on the following Facelet:
will print
Children: 2
.Thus
#{cc.childCount != 0}
will tell you whether a composite component has children or not.我遇到了同样的问题,并设法在其构面“javax.faces.component.COMPOSITE_FACET_NAME”中找到复合组件的子组件。
在 Java 中是这样的:
在 JSF 中是这样的:
希望它有帮助。
I've encountered the same problem and managed to find children of a composite component within it's facet 'javax.faces.component.COMPOSITE_FACET_NAME'.
In Java it's like this:
In JSF it's something like:
Hope it helps.
至少在 Mojarra 上这是行不通的。复合组件的子组件插入得很好,但访问
#{cc.parent}
或#{cc.children}
在 2.0.2 上不起作用,并且#在 2.0.4 上,无论子项数量有多少,{cc.childCount}
始终返回0
。At least on Mojarra this does not work. A composite component's children get inserted just fine but accessing
#{cc.parent}
or#{cc.children}
does not work on 2.0.2, and#{cc.childCount}
always returns0
on 2.0.4, regardless of the number of children.