早上好!
是否有可能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 );