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

时间:2013-07-02 09:45:40

标签: javascript jsf richfaces ajax4jsf rerender

在我的页面中,我有一个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)">

1 个答案:

答案 0 :(得分:1)

通常,我定义要在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. 即可
  3. 请勿添加prependId="false",但要定义表单ID,并在reRender部分中使用这些ID,如下所示:reRender="theIDYouGaveToYourForm:theIdOfYourDataTable"