在设置时间后刷新数据并调用backingbean方法

Refreshing data and calling backing bean method after set time

本文关键字:调用 backingbean 方法 数据 刷新 设置 时间      更新时间:2023-09-26

在我的页面中,我有一个rich:datatable,它从后台bean获取数据。我想在bean中调用一个方法来刷新数据,然后刷新表。

我目前有以下情况,但方法正在被调用,但表仍然没有刷新

<f:view>
    <h:form>
        <a4j:region>
            <a4j:poll id="poll" interval="5000" action="#{attendance.updateData()}" enabled="true" reRender="poll,attendanceList"/>
        </a4j:region>
        <rich:dataTable width="500" id="attendanceList" reRender="scroller"
            rows="#{attendance.getRows()}" columnClasses="attendance"
            rowClasses="even-row, odd-row"
            value="#{attendance.getData()}" var="a"
            style="width:100%" rendered="#{attendance.renderAttendanceList}"
            onbegin="waitCursor(true)" oncomplete="waitCursor(false)">

通常,我定义要在a4j:poll本身中调用的操作:

<a4j:poll id="poll" interval="1800000" action="#{viewManagedBean.actionToBeCalled}" enabled="true" reRender="poll,attendanceList"/>

此外,请注意,您在两个单独的表单中定义了a4j:pollrich:dataTable,而在表单中没有指定prependId="false"。但是,您引用的是没有表单ID的dataTable(在reRender中)。
根据OP评论编辑。以下是如何处理prepend id,您有两种可能的方法:

  1. 只需将prependId="false"添加到表单中
  2. 不要添加prependId="false",而是定义表单ID,并在reRender部分中使用这些ID,如下所示:reRender="theIDYouGaveToYourForm:theIdOfYourDataTable"