PrimeFaces的p:ajax更新不起作用

3

我正在使用带有单元格编辑的Primefaces 3.4.2数据表。在编辑事件方法被调用后,我希望数据表本身能够更新。我是这样做的:

<p:dataTable id="timeTable" var="log" value="#{reviewTimesheetBean.lazyModel}" paginator="true"
                            paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="15,30,45,60"
                            paginatorPosition="bottom" rows="2" currentPageReportTemplate="{currentPage} de {totalPages}" lazy="true" editable="true" emptyMessage="#{label['empty.message']}">

  <p:ajax event="rowEdit" listener="#{reviewTimesheetBean.onEdit}" update="timeTable" />
   <p:ajax event="rowEditCancel" listener="#{reviewTimesheetBean.onCancel}" update="timeTable" />
....
</p:datatable>

但是在rowEdit事件后,load方法从未被调用。我也尝试使用选择器,但也不起作用。难道datatable无法通过这种方式进行更新吗?

谢谢

Kelly


这在PrimeFaces 3.3及更早版本中曾经失败过。您确定您正在使用3.4.2吗?也许存在回归问题。 - BalusC
是的,我确定我正在使用这个版本...我将尝试一个比它更旧的版本。 - Kelly Goedert
1
刚刚尝试了PrimeFaces 3.2,情况依旧发生了... - Kelly Goedert
我并不是说旧版本会起作用。我只是说在之前的PrimeFaces版本中确实会出现这个问题,直到3.3版本才得以解决。但是,毕竟这个修复仅适用于输入和命令组件操作的ajax动作,而不适用于行编辑器操作。我确实可以重现你的问题。使用@form也无法产生所需的结果。 - BalusC
抱歉...在发布后重新阅读您所写的内容后,我意识到您的意思。 - Kelly Goedert
如果有人遇到相同的问题,我使用了远程命令的解决方案:http://code.google.com/p/primefaces/issues/detail?id=1558 - Kelly Goedert
1个回答

0

你尝试过remoteCommand吗?

<p:remoteCommand name="onCellEdit" action="#{bean.init}" update="formId" ignoreAutoUpdate="true" />

然后在您的数据表中:

<p:ajax event="cellEdit" oncomplete="onCellEdit()" listener="#{bean.onCellEdit}" />

注:remoteCommand 就在 datatable 上面... 不确定是否会产生影响。

请注意 onComplete 的值必须与 remote command 的名称匹配。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接