4

おはよう!

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
}

どうもありがとうございます。

4

1 に答える 1

4

はい、可能です。次のことを指定する必要があります。

  • reRenderMBean メソッドを呼び出すことができるタグの属性を介してレンダリングされる列
  • ajaxKeys の属性を介してレンダリングされる行rich:dataTable

属性は、更新される行番号を保持する Object に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 );
于 2011-08-29T14:20:42.517 に答える