問題(精簡版)行上extendedDataTable行不通的渲染
我有RichFaces的(4.3.2決賽)的問題。
我試圖重新排列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重新顯示現在放在表上:「multiOccurenceTable」。 這可以工作,在每次選擇更改時,整個表格都會被重新渲染。
對於性能我嘗試更新行或單元格級別的表。我無法得到這個工作。我嘗試了簡單而複雜的解決方案,但都沒有成功。我究竟做錯了什麼? (大多數示例/教程適用於richfaces 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' 按鈕
<a4j:commandLink actionListener="#{crudBean.actionForm.save}"
render="multiOccurenceTable:@rows(crudBean.actionForm.rowsToUpdate):soort"
reRender="multiOccurenceTable:@rows(crudBean.actionForm.rowsToUpdate):soort">Save1
</a4j:commandLink>
我也有ajaxKeys採用根據該tutorial rich 3.x沒有更迭,這example (rich 3.3)
試圖如果您有任何可能的解決方案,請讓我知道。
我的錯誤已修復。錯誤不是渲染。但是渲染的條件被設置在渲染的組件之外。這導致重新渲染組件時未更新值,導致屏幕上沒有任何更改。
經驗教訓:如果您有渲染條件,請確保條件值位於重新渲染的組件內。
p.s.你需要使用術語渲染。 reRender是來自早期版本a4j的a4j術語。 JSF 2基本上標準化了a4j並將reRender重命名爲渲染。 我認爲reRender這個詞更好,因爲你不能渲染任何未被渲染的東西。 Primefaces具有最佳的術語; 「更新」,但這並沒有真正幫助清除困惑:) –
謝謝。這個錯誤在別的地方,這個答案讓我看着正確的方向。 –
ps。對於未來讀者的更正:應該是。 –