如何从 Primefaces 中的数据表列中获取预编辑值?

How to get the pre edited value from a dataTable column in Primefaces?

单击 PrimeFaces 中的编辑按钮时,我希望我的侦听器获得列的新值以及旧值。我目前只得到新值:

public void onLicenseEdit(RowEditEvent event) {
    selectedItemLicense = (ItemLicense) event.getObject();
}

这是我的 xhtml:

<p:dataTable id="licenses" var="license"
    value="#{itemShowView.itemReference.lastVersionItemLicenses}"
    emptyMessage="#{messages['common.emptymessage']}"
    class="itemLicensesTable"
    selection="itemShowView.selectedLicense"
    editable="true">
    <p:ajax event="rowEdit" update="@(.itemLicensesTable)" listener="#{itemShowView.onLicenseEdit}"  />
    <f:facet name="header">

    <p:column headerText="#{messages['license.licensenumber']}">
        <p:cellEditor>
            <f:facet name="output">
                <h:outputText value="#{license.licensePK.licenseNumber}" />
            </f:facet>
            <f:facet name="input">
                <p:inputText value="#{license.licensePK.licenseNumber}" />
            </f:facet>
        </p:cellEditor>
    </p:column>

    ...

    <p:column>
        <p:rowEditor />
    </p:column>

    ...
</p:dataTable>

请帮忙。提前致谢。

感谢您的评论。我使用 valueChangeListener 修改了代码。这是我的解决方案:

<f:facet name="input">
    <p:inputText value="#{itemLicense.itemLicensePK.licenseNumber}" valueChangeListener="#{itemShowView.onLicenceChange}"/>
</f:facet>

和Java代码:

private ItemLicense selectedItemLicenseForModification;

...

public void onLicenceChange() {
    selectedItemLicenseForModification = (ItemLicense) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("itemLicense");
}