我有一个数据表,其中每一行都有 24 小时输入字段。在某一时间点有超过 1000 个可编辑的输入字段。我注意到在 ajax 调用期间使用 p:cellEditor 时,primefaces 正在提交整个数据表。我怎样才能避免这种情况?请在下面找到我拥有的代码,并在其中找到每个重要部分的注释。
<!-- Fires the cellEdit event to trigger the validations to happen as user tabs out of the input box -->
<p:ajax event="cellEdit" listener="#{renderValidator.onCellEdit}" update=":#{p:component('globalMessages')}" process="@this" />
<p:column id="hour1" styleClass="col-right col-90">
<f:facet name="header">
<h:outputText value="1" escape="false"/>
</f:facet>
<p:cellEditor >
<f:facet name="output">
<h:outputText value="#{row.amount[0]}" escape="false">
<f:convertNumber maxFractionDigits="3" minFractionDigits="3" maxIntegerDigits="5" />
</h:outputText>
</f:facet>
<f:facet name="input">
<p:inputText id="hour1Input" value="#{row.amount[0]}" maxlength="10" size="10" readonly="#{row.readOnly}" onchange='PowerMeter.setPowerMeterChange()'
styleClass="col-right" valueChangeListener="#{row.setDirtyFlag(true)}" >
<!-- formats data the way its displayed -->
<f:convertNumber maxFractionDigits="3" minFractionDigits="3" maxIntegerDigits="5" />
<!-- validates the input value w.r.t a custom validator -->
<f:validator validatorId="hourlyValueValidator" for="hour1Input" />
<!-- javascript restricting user to input alpha numeric characters -->
<pe:keyFilter testFunction="return PowerMeter.isValidMWH(this, c);" />
</p:inputText>
</f:facet>
</p:cellEditor>
</p:column>