我有一个 Web 应用程序,我在其中使用 JSF + Primefaces 作为 UI。在处理 AJAX 调用(如对数据表的 rowSelect 事件进行 AJAX 调用)时,我在对网页应用脏检查时遇到了困难。
以下是我想通过 AJAX 调用应用脏检查的确切场景。以下是我在网页中使用的组件。
1)我有一个由名为“companyBean”的bean填充的数据表(具有公司属性)
<p:dataTable id="basic" var="company" value="#{companyInfoBean.companyList}"
rowKey="#{company.id}"
selection="#{companyInfoBean.selectedCompany}" selectionMode="single">
<p:ajax event="rowSelect" update=":customerDataForm:customerDataFields" />
<p:column id="modelHeader">
<f:facet name="header">
<h:outputText value="Company Name" />
</f:facet>
<h:outputText value="#{company.companyName}" />
</p:column>
more columns....
</p:dataTable>
如上所选行(AJAX 调用)所示,我更新了页面底部表单中的值
<h:form id="customerDataForm">
<p:panel id="customerDataFields">
<p:panelGrid >
<p:row>
<p:column>
<h:outputLabel for="companyname" value="Company Name " />
</p:column>
<p:column>
<p:inputText id="companyname" value="#{companyInfoBean.selectedCompany.companyName}" label="Company Name" />
</p:column>
more columns...
<p:row>
<p:column colspan="2" style="text-align:right">
<p:commandButton value="Save" actionListener="#{companyInfoBean.updateCompany}"
update=":customerDataForm:customerDataTable"/>
</p:column>
<p:column colspan="2" style="text-align:left">
<p:commandButton value="Undo" />
</p:column>
</p:row>
在上面的表单中,用户可以编辑在数据表上的 rowSelect 上更新的值。
现在我想对数据表上的 rowSelection 表单进行脏检查,即,尽管执行了 rowSelect 的 AJAX 调用,但是否提示用户使用的表单上有一些未保存的更改。
基本上我可以从这个场景中理解..我需要一些基于条件的 AJAX 调用,而不是简单的。或者我必须使用一些 jQuery 的东西来实现脏检查。