jsf - 使用 insertChildren 并获取子属性

标签 jsf nested components children composite

我实际上是在尝试创建一个自定义复合表组件,因为 h:datatable 或 p:datatable 不符合我的需要。然而,它应该像 primefaces 数据表一样使用。
找到后JSF composite component childrens

Expose items of a list while iterating within composite component我看到了终点线,但现在我被卡住了。

我的 xhtml :

<h:body>
    <sm:datatable mode="columntoggle" id="mytable" value="#{managerBean.objects}" var="object">
        <sm:column header="KeyHeader" property="key">
            <h:outputText value="#{object.key}"/>    
        </sm:column>
        <sm:column header="ValueHeader" property="value">
            <h:outputText value="#{object.value}"/>    
        </sm:column>
    </sm:datatable>
</h:body>

这是数据表复合 :
<cc:interface>
    <cc:attribute name="id" />
    <cc:attribute name="mode" />
    <cc:attribute name="var" />
    <cc:attribute name="value" type="java.util.List"/>
</cc:interface>

<cc:implementation>
    <table data-role="table" data-mode="#{cc.attrs.mode}" id="my-table">
        <thead>
            <tr>
                <ui:repeat value="#{component.getCompositeComponentParent(component).children}" var="child">
                    <th>
                        <h:outputText value="#{child.attrs.header}"/>
                    </th>
                </ui:repeat>
            </tr>
        </thead>
        <tbody>
            <ui:repeat value="#{cc.attrs.value}" var="object">
                <tr>
                    <c:forEach items="#{cc.children}" var="child" varStatus="loop">
                        <cc:insertChildren/>
                    </c:forEach>
                </tr>
            </ui:repeat>
        </tbody>
    </table>
</cc:implementation>

这就是 复合柱
<cc:interface>
    <cc:attribute name="header" />
    <cc:attribute name="property" />
    <cc:facet name="content"/>
</cc:interface>

<cc:implementation>
    <td><cc:insertChildren/></td>
</cc:implementation>

独立工作

正文 独立工作

像上面那样把它们放在一起,我只会得到 tbody。标题总是空着有什么建议吗?
提前感谢您的帮助!

最佳答案

这不是错误,它实际上按照 mojarra 中的设计工作。使用 cc:insertChildren 将子项移动到 cc:insertChildren 标记的父标记。这个问题等价于另一个问题并且具有相同的解决方案。查看我对 this question 的回答.

基本上,你把 <ui:fragment>围绕<cc:insertChildren> ,将该片段绑定(bind)到 FacesComponent bean 中的属性。

关于jsf - 使用 insertChildren 并获取子属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15261215/

相关文章:

java - JSF中如何访问动态页面的内容?

JSF - 自定义 NavigationHandler 结果值无效?

delphi - 具有高级格式选项的列表框组件?

nested - Redux 更新嵌套状态数组

jquery - 通过 JQuery 传递和返回 ColdFusion 结构

javascript - 将导入的对象作为 Prop 从父级传递给子级与在这些子级中导入该对象的权衡是什么?

java - 使用 Java 反射动态创建 JSF 表单

css - 如何为单个jsf页面应用jsf primefaces主题

Python 用 Pandas 压平多重嵌套字典 JSON

mysql查询以计算具有一定数量产品的客户