访问辅助bean中的动态dataTable列

时间:2015-05-26 14:51:58

标签: jsf primefaces datatable

我有一个带有动态列的dataTable,列重新排序和一个columnToggler来控制当前可见的列。它看起来像这样:

        <p:dataTable id="dashboard-edition-table" widgetVar="dashboardEditTableWidget" value="#{dashboardEditionBean.selectedDashboard.deviceMocks}" var="deviceMock"
            draggableColumns="true">
            <p:ajax event="colReorder" listener="#{dashboardEditionBean.onReorder}" />
            <f:facet name="header">
                #{dashboardEditionBean.selectedDashboard.name}

                <p:commandButton id="toggler" type="button" value="Columns" style="float:right" icon="ui-icon-calculator" />
                <p:columnToggler datasource="dashboard-edition-table" trigger="toggler">
                    <p:ajax event="toggle" listener="#{dashboardEditionBean.onToggle}" />
                </p:columnToggler>
                <br />
            </f:facet>
            <p:columns value="#{dashboardEditionBean.columns}" var="column" columnIndexVar="colIndex" sortBy="#{deviceMock[column.property]}" filterBy="#{deviceMock[column.property]}"
                visible="#{column.visible}">
                <f:facet name="header">
                    <h:outputText value="#{column.header}" />
                </f:facet>
                <h:outputText value="#{deviceMock[column.property]}" />
            </p:columns>
        </p:dataTable>

正如您所见,我有听众重新排序和切换事件。在这些监听器中,我试图访问dataTable并打印所有列。

public void onReorder(AjaxBehaviorEvent event) {
    DataTable table = (DataTable) event.getSource();
    System.out.println("REORDER");
    for (UIColumn column : table.getColumns()) {
        System.out.println("key: " + column.getColumnKey() + ", field:" + column.getField() + ", headerText: "
                        + column.getHeaderText() + ", visible: " + column.isVisible());
    }
}

我不明白为什么我在控制台中获得此输出:

key: dashboard-edition-form:dashboard-edition-table:j_idt87:3, field:null, headerText: null, visible: false
key: dashboard-edition-form:dashboard-edition-table:j_idt87:4, field:null, headerText: null, visible: false
key: dashboard-edition-form:dashboard-edition-table:j_idt87:5, field:null, headerText: null, visible: false
key: dashboard-edition-form:dashboard-edition-table:j_idt87:6, field:null, headerText: null, visible: false
key: dashboard-edition-form:dashboard-edition-table:j_idt87:7, field:null, headerText: null, visible: false

正如您在支持bean列中看到的那样,空标题和可见性设置为false DESPITE,它们在视图中正确呈现(每列都有一个正确的标题并且可见)。 为什么会这样?我真的很感激这个问题的答案。

0 个答案:

没有答案