我正在开发JSF a4j componenet。

<h:selectOneMenu id="sampleSelect" value="#{myBackingBean.id}"
    immediate="true">
    <f:selectItems value="#{myBackingBean.generateSampleList}"/>
    <h:outputLabel value="Sample List : " for="sampleSelect"></h:outputLabel>
    <a4j:support ajaxSingle="true"
                 event="onchange"
                 reRender="dataTable1, dataTable2, dataTable3"
                 oncomplete="setColorbox();"
                 action = "#{myBackingBean.setSampleListForDatatables}">
    </a4j:support>
    </h:selectOneMenu>


和我的数据表为

<h:panelGroup id="dataTable1">
    <h:dataTable value="#{myBackingBean.anotherBean.sampleList}"
                 var="sampleList"
                 styleClass="table">
        <h:column>
            ....
        </h:column>
    </h:dataTable>
    </h:panelGroup>


我有多个相同的数据表,这些数据表在此ajax调用中已更改,应在ajax调用完成后重新呈现。

在服务器端,数据已完美更改,但未在UI上修改。

为了检查目的,我做的是...。

<h:column>
    <%=new java.util.Date()%>
</h:column>


在我的ajax调用后未修改的数据表中。

有人可以向我提出任何建议吗?

从某些帖子中,我知道我必须使用已经完成的Instant =“ true”。但是没有运气。

最佳答案

我得到了答案

<h:dataTable value="#{myBackingBean.anotherBean.sampleList}"
             var="sampleList"
             styleClass="table"
             id="dataTable1">
    <h:column>
        ....
    </h:column>
</h:dataTable>


我删除了h:panelGroup并将该ID放入h:datatable,它可以正常工作。 :)

10-07 19:37