早上好!
是否可以仅重新渲染rich:dataTable 的 1 个特定行?
我有一个丰富的:dataTable,当我做一些我确定只有 1 行发生变化的事情时,我只需要重新渲染这一行,而不是整个表。是否可以?如何?
XHTML:
<rich:dataTable id="myTable" value="#{bean.table}" var="me">
<rich:column>
<h:outputText value="#{me.id}" />
</rich:column>
<rich:column>
<h:outputText value="#{me.valueOne}" />
</rich:column>
<rich:column>
<h:outputText value="#{me.valueTwo}" />
</rich:column>
</rich:dataTable>
<some:tag.... reRender="??????" action="bean.example" />
Java:
public void example{
// Do something that affects to the row selected
}
非常感谢你。
最佳答案
是的,有可能 。您必须指定以下内容:
reRender
呈现哪些列可以调用MBean方法的标签属性ajaxKeys
渲染哪些行rich:dataTable
的属性. ajaxKeys
属性绑定(bind)到 Set <Integer>
保存要更新的行号的对象。例如,假设您想使用
a4j:commandButton
调用 Mbean 方法。并希望在操作完成后呈现特定的行和列。您可以使用以下内容:<a4j:commandButton action="#{bean.someAction}" reRender="columnID,columnID2">
<f:setPropertyActionListener value="#{idx}" target="#{bean.selectedRow}" />
</a4j:commandButton>
<rich:dataTable id="myTable" value="#{bean.table}" var="me" ajaxKeys="#{bean.rowsToUpdate}" rowKeyVar="idx">
<rich:column id="columnID">
<h:outputText value="#{me.id}" />
</rich:column>
<rich:column id="columnID2">
<h:outputText value="#{me.valueOne}" />
</rich:column>
<rich:column>
<h:outputText value="#{me.valueTwo}" />
</rich:column>
</rich:dataTable>
里面
bean.someAction()
,您将要更新的行号添加到 rowsToUpdate
整数集:HashSet<Integer> rows = new HashSet<Integer>();
rows.add(selectedRow);
setRowsToUpdate( rows );
关于xhtml - 重新渲染特定行富:dataTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7227416/