如何从 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");
}
单击 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");
}