早上好!
是否有可能reRender只有1行特定的富:dataTable?
我有一个富有的:dataTable,当我做一些我确定只有1行已经改变的东西时,我需要reRednder只有这一行,而不是整个表.可能吗?怎么样?
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 }
非常感谢你.
解决方法
对的,这是可能的 .你必须指定以下内容:
>通过可以调用MBean方法的标记的reRender属性呈现哪些列
>通过rich:dataTable的ajaxKeys属性呈现哪些行.
ajaxKeys属性绑定到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 );