1

質問(ショートバージョン)

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でも試しました

可能な解決策がありましたら、お知らせください。


私のエラーは修正されました。エラーはレンダリングではありませんでした。ただし、レンダリングの条件は、レンダリングされたコンポーネントの外部で設定されていました。これにより、値が更新されずにコンポーネントが再レンダリングされ、画面が変化しませんでした。

得られた教訓: レンダリング条件がある場合は、条件値が再レンダリングされたコンポーネント内にあることを確認してください。


4

1 に答える 1