早上好!
是否可以仅重新渲染 rich:dataTable 的 1 特定行?
我有一个 rich: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
.
The ajaxKeys
属性绑定到Set <Integer>
保存要更新的行号的对象。
例如,假设您想使用以下方式调用 Mbean 方法a4j:commandButton
并希望在操作完成后渲染特定的行和列。您可以使用以下内容:
<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 );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)