我是JSF新手,在尝试在JSF数据表中显示数据子集时遇到了问题。问题描述:1. 我有一个绑定到模型的数据表,如下所示:
<h:dataTable border="1" cellspacing="0" cellpadding="0" id="invoiceLinesUpperDt" styleClass="basic-table" value="#{pc_InvoiceCRMVUpdate.viewBean.showInvoiceLinesInError? pc_InvoiceCRMVUpdate.viewBean.invoice.invoiceLinesInError : pc_InvoiceCRMVUpdate.viewBean.invoice.invoiceLines}" var="invoiceLine">
我有一个复选框,触发两个数据集之间,如下所示:
<h:selectBooleanCheckbox id="displayOnlyLinesInErrorCb" immediate="false" value="#{pc_InvoiceCRMVUpdate.viewBean.showInvoiceLinesInError}" onclick="javascript: document.forms['invoiceCRMVUpdateForm'].submit();" valueChangeListener="#{pc_InvoiceCRMVUpdate.displayOnlyLinesInError}"/>
当完整的数据列表(由pc_InvoiceCRMVUpdate.viewBean.invoice.invoiceLines返回)显示时,没有问题-我可以编辑和提交值并使它们正确地填充在数据模型中
显示数据子集(由pc_InvoiceCRMVUpdate.viewBean.invoice.invoiceLinesInError返回)时出现问题。我仍然可以编辑数据,但当我触发回完整列表的数据出现在错误的行。例如,如果子集的第一行被编辑,那么它们将出现在完整集合的第一行,依此类推。
在恢复视图阶段调用正确的数据模型方法。所以我期望在子集中正确的位置得到值。
有什么问题吗?
提前感谢!
罗马。找到问题。这是JSF的幸运经验和愚蠢的错误。
将FacesContext.getCurrentInstance().renderResponse();
留在值更改监听器#{pc_InvoiceCRMVUpdate.displayOnlyLinesInError}
中。
删除那行代码后,一切都开始工作了!