Jsf Primefaces Accordion+数据表过滤器/多重选择未按预期工作

Jsf Primefaces Accordion+数据表过滤器/多重选择未按预期工作,jsf,primefaces,Jsf,Primefaces,我有一个搜索屏幕,显示根据搜索值分组在一起的数据。这就是显示的实现方式。我有一个p:accordionpanel,它从后端bean动态填充。我有一个p:datatable,在p:datatable面板中。可以显示多个手风琴面板,每个面板包含一个datatable。显示器按预期工作 问题:我在数据表上实现了过滤器和多行选择。如果填充了多个datatable,则筛选器和搜索仅对最后一个datatable起作用。p:datatable的selection和filteredValue属性绑定到单独的对象

我有一个搜索屏幕,显示根据搜索值分组在一起的数据。这就是显示的实现方式。我有一个p:accordionpanel,它从后端bean动态填充。我有一个p:datatable,在p:datatable面板中。可以显示多个手风琴面板,每个面板包含一个datatable。显示器按预期工作

问题:我在数据表上实现了过滤器和多行选择。如果填充了多个datatable,则筛选器和搜索仅对最后一个datatable起作用。p:datatable的selection和filteredValue属性绑定到单独的对象。如果单击任意一个“全选”框,最后一个表中的行将被选中。我希望选中表中与“全选”复选框关联的行

这是手风琴/数据表:

<p:accordionPanel multiple="true"
                  value="#{basicSearchResultsVO.sortedMessages}" var="sortedMessages">
    <p:tab title="#{sortedEdiMessages.key}">
        <p:dataTable id="dataTable"
                     emptyMessage="No Data found with searched criteria"
                     filteredValue="#{sortedMessages.value.filteredMessages}"
                     rowKey="#{message.archiveSequenceI}"
                     rows="10"
                     selection="#{sortedMessages.value.selectedMessages}"
                     sortBy="#{message.msgDateTimeTs}" sortOrder="descending"
                     value="#{sortedMessages.value.messages}" var="message"
                     widgetVar="messagesTable">
            <f:facet name="header">
                <p:outputPanel style="text-align: right;margin:3px;">
                    <h:outputText value="Search all fields:"/>
                    <p:inputText id="globalFilter" onkeyup="PF('messagesTable').filter()" style="width:150px;" placeholder="Enter keyword"/>
                </p:outputPanel>
            </f:facet>

            ...

        </p:dataTable>
    </p:tab>

    ...

</p:accordionPanel>

我不确定我错过了什么。非常感谢您的帮助和反馈

好的。我发现代码有问题。必须使datatable上的widgetVar属性唯一,才能使filter/multi-select在每个datatable上正确工作。这是修改后的代码。唯一的更改是p:datatable的widgetVar属性和绑定到后端bean提供的唯一值的p:inputText的onkeyup属性

<p:accordionPanel multiple="true"
                  value="#{basicSearchResultsVO.sortedMessages}" var="sortedMessages">
    <p:tab title="#{sortedEdiMessages.key}">
        <p:dataTable id="dataTable"
                     emptyMessage="No Data found with searched criteria"
                     filteredValue="#{sortedMessages.value.filteredMessages}"
                     rowKey="#{message.archiveSequenceI}"
                     rows="10"
                     selection="#{sortedMessages.value.selectedMessages}"
                     sortBy="#{message.msgDateTimeTs}" sortOrder="descending"
                     value="#{sortedMessages.value.messages}" var="message"
                     widgetVar="#{sortedEdiMessages.key}">
            <f:facet name="header">
                <p:outputPanel style="text-align: right;margin:3px;">
                    <h:outputText value="Search all fields:"/>
                    <p:inputText id="globalFilter" onkeyup="PF('#{sortedEdiMessages.key}').filter()" style="width:150px;" placeholder="Enter keyword"/>
                </p:outputPanel>
            </f:facet>

            ...

        </p:dataTable>
    </p:tab>

    ...

</p:accordionPanel>