这是一个最小的 rich:dataTable 示例,其中包含 a4j:commandLink。单击时,它会向我的 bean 发送一个 AJAX 请求并重新呈现数据表。
<rich:dataTable id="dataTable" value="#{carManager.all}" var="item">
<rich:column>
<f:facet name="header">name</f:facet>
<h:outputText value="#{item.name}" />
</rich:column>
<rich:column>
<f:facet name="header">action</f:facet>
<a4j:commandLink reRender="dataTable" value="Delete" action="#{carForm.delete}">
<f:setPropertyActionListener value="#{item.id}" target="#{carForm.id}" />
<f:param name="from" value="list" />
</a4j:commandLink>
</rich:column>
</rich:dataTable>
到目前为止,上面的示例工作正常。但是当我在表中添加一个rich:subTable(例如按车库分组汽车)时,重新渲染失败......
<rich:dataTable id="dataTable" value="#{garageManager.all}" var="garage">
<f:facet name="header">
<rich:columnGroup>
<rich:column>name</rich:column>
<rich:column>action</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column colspan="2">
<h:outputText value="#{garage.name}" />
</rich:column>
<rich:subTable value="#{garage.cars}" var="car">
<rich:column><h:ouputText value="#{car.name}" /></rich:column>
<rich:column>
<a4j:commandLink reRender="dataTable" value="Delete" action="#{carForm.delete}">
<f:setPropertyActionListener value="#{item.id}" target="#{carForm.id}" />
<f:param name="from" value="list" />
</a4j:commandLink>
</rich:column>
</rich:column>
</rich:dataTable>
现在 rich:dataTable没有重新呈现,但该项目被删除,因为该项目在手动页面刷新后没有显示。
为什么 subTable 会在此处中断对重新渲染的支持?
坦克汤姆