質問(ショートバージョン)
richfaces(4.3.2-final) に問題があります。
rich:extendedDataTable 内の行/セルを再レンダリングしようとしています。私はそれを働かせることができません。機能する唯一のことは、テーブル全体を再レンダリングすることです。
私が見つけることができるすべての例/チュートリアルは、バージョン 3.3 用です。それらの解決策は私にはうまくいきません。
解決策または 4.2+ の例/チュートリアルを手伝っていただければ幸いです。
質問のロングバージョン
選択されていない行セル:
<a4j:outputPanel layout="block" rendered="#{inactive}">
<h:outputText
value="#{cc.attrs.rowItem.getValue(cc.attrs.id)}"
styleClass="outputField"
style="#{cc.attrs.style}">
</h:outputText>
</a4j:outputPanel>
選択された行のセル:
<a4j:outputPanel layout="block" rendered="#{active and field.echoed}">
<h:inputText
value="#{field.value}"
id="#{cc.attrs.id}ID"
disabled="#{field.disabled}"
readonly="#{field.readonly}"
rendered="true"
title="#{field.title}"/>
....
</a4j:outputPanel>
他の行の選択時:
<a4j:ajax event="selectionchange"
listener="#{crudBean.actionForm.selectionListener}"
render="messages,saveButton,deleteButton,multiOccurenceTable"
/>
HTML コード、選択されていない行セル:
<td class="rf-edt-td-j_idt230">
<div class="rf-edt-c rf-edt-c-j_idt230">
<div class="rf-edt-c-cnt">
<div id="multiOccurenceTable:0:soort:soort">
<div id="multiOccurenceTable:0:soort:j_idt140">
<span class=" outputField" style="">VO</span>
</div>
</div>
</div>
</div>
</td>
選択された行セル HTML:
<td class="rf-edt-td-j_idt230">
<div class="rf-edt-c rf-edt-c-j_idt230">
<div class="rf-edt-c-cnt">
<div id="multiOccurenceTable:1:soort:soort">
<div id="multiOccurenceTable:1:soort:j_idt240">
<input id="multiOccurenceTable:1:soort:soortID" name="multiOccurenceTable:1:soort:soortID" value="VO" type="text">
</div>
</div>
</div>
</div>
</td>
私の試み: on selectionchange rerender がテーブル「multiOccurenceTable」に配置されるようになりました。これは機能し、選択が変更されるたびに、テーブル全体が再レンダリングされます。
パフォーマンスのために、行またはセルレベルでテーブルを更新しようとしています。私はこれを機能させることができません。シンプルなソリューションとより複雑なソリューションを試しましたが、どれもうまくいきませんでした。私は何を間違っていますか?(ほとんどの例/チュートリアルは、理由である可能性があるインターネット上のリッチフェイス 3.3 用です)
1 を試して、行/セルを手動で更新します。
3 行すべて: [保存] ボタンを押しても何も起こりませんでした
<a4j:commandLink actionListener="#{crudBean.actionForm.save}"
render="multiOccurenceTable:0,multiOccurenceTable:1,multiOccurenceTable:2"
reRender="multiOccurenceTable:0,multiOccurenceTable:1,multiOccurenceTable:2">Save
</a4j:commandLink>
1 つのセル:「save1」ボタンを押しても何も起こりませんでした
<a4j:commandLink actionListener="#{crudBean.actionForm.save}"
render="multiOccurenceTable:@rows(crudBean.actionForm.rowsToUpdate):soort"
reRender="multiOccurenceTable:@rows(crudBean.actionForm.rowsToUpdate):soort">Save1
</a4j:commandLink>
このチュートリアルリッチ3.xとこの例(リッチ3.3)に従って、成功せずにajaxKeysでも試しました
可能な解決策がありましたら、お知らせください。
私のエラーは修正されました。エラーはレンダリングではありませんでした。ただし、レンダリングの条件は、レンダリングされたコンポーネントの外部で設定されていました。これにより、値が更新されずにコンポーネントが再レンダリングされ、画面が変化しませんでした。
得られた教訓: レンダリング条件がある場合は、条件値が再レンダリングされたコンポーネント内にあることを確認してください。