1

我有一个数据表,其中一列是可编辑的。只要我不使用我的过滤器,我就可以浏览我的列表并可以编辑我想要的任何行中的条目。我没有收到任何错误,并且我的更改已正确保存在数据库中。

但是在我使用过任何过滤器之后,一切都变了。过滤器本身工作正常。

但是当我现在尝试编辑任何条目时,我的 CellEditEvent 中的 event.oldValue() 始终为空,我无法保留我的条目。
而且只有我的分页器的第一页充满了数据。每隔一页都是空的。

这是视图:

<div class="Container100">
    <p:dataTable paginator="true" rows="15" var="listReportingParticipantOverview" value="#{reportingBean.listReportingParticipantOverview}" 
                 id="participantOverviewId" widgetVar="participantOverviewId"
                 editable="true" editMode="cell" editInitEvent="dblclick"
                 emptyMessage="#{msg['system.no_result']}"
                 filteredValue="#{reportingBean.filteredListReportingParticipantOverview}">
                                 
        <p:ajax event="cellEdit" listener="#{reportingBean.onCellEdit}" update=":reportingForm:msgs"/>
    
        <p:column headerText="#{msg['model.reporting.participant_overview.name']}" filterBy="#{listReportingParticipantOverview.name}" filterMatchMode="contains">
            <h:outputText value="#{listReportingParticipantOverview.name}" />
        </p:column>
        <p:column headerText="#{msg['model.reporting.participant_overview.dateOfBirth']}" filterBy="#{listReportingParticipantOverview.dateOfBirth}" filterMatchMode="contains">
            <h:outputText value="#{listReportingParticipantOverview.dateOfBirth}" />
        </p:column>
        <p:column headerText="#{msg['model.reporting.participant_overview.email']}" filterBy="#{listReportingParticipantOverview.email}" filterMatchMode="contains">
            <p:cellEditor>
                <f:facet name="output">
                    <h:outputText value="#{listReportingParticipantOverview.email}" />
                </f:facet>
                <f:facet name="input">
                    <p:inputText value="#{listReportingParticipantOverview.email}" style="width:100%" label="name"/>
                </f:facet>
            </p:cellEditor>
        </p:column>
    </p:dataTable>
</div>

这是豆:

@SessionScoped
@ManagedBean(name = "reportingBean2")
public class ReportingBean2 extends BeanController implements Serializable {

    List<ReportingParticipantOverview> listReportingParticipantOverview = new ArrayList<ReportingParticipantOverview>();
    List<ReportingParticipantOverview> filteredListReportingParticipantOverview;

    ContactRepository contactRepository;
    ContactRepository contactRepositoryOtherDBContext;
    CommunicationRepository communicationRepositoryOtherDBContext;

    private AbstractApplicationContext otherDBContext;

    public void initData() {
        this.listReportingParticipantOverview = this.contactRepositoryOtherDBContext
                .selectParticipantOverviewReporting();
    }

    @PostConstruct
    public void init() {
        otherDBContext = new ClassPathXmlApplicationContext("applicationContext_otherDB.xml");

        this.contactRepository = this.getApplicationContext().getBean(ContactRepository.class);
        this.contactRepositoryOtherDBContext = otherDBContext.getBean(ContactRepository.class);
        this.communicationRepositoryOtherDBContext = otherDBContext.getBean(CommunicationRepository.class);
    }

    public void onCellEdit(CellEditEvent event) {
        Object oldValue = event.getOldValue();
        Object newValue = event.getNewValue();

//          ...
    }

    public List<ReportingParticipantOverview> getListReportingParticipantOverview() {
        return listReportingParticipantOverview;
    }

    public void setListReportingParticipantOverview(
            List<ReportingParticipantOverview> listReportingParticipantOverview) {
        this.listReportingParticipantOverview = listReportingParticipantOverview;
    }

    public List<ReportingParticipantOverview> getFilteredListReportingParticipantOverview() {
        return filteredListReportingParticipantOverview;
    }

    public void setFilteredListReportingParticipantOverview(
            List<ReportingParticipantOverview> filteredListReportingParticipantOverview) {
        this.filteredListReportingParticipantOverview = filteredListReportingParticipantOverview;
    }
}
}

我正在使用 Java 8、Eclipse 2021-03 和 Primefaces 10.0.0。任何帮助表示赞赏:-)

4

0 回答 0