问题(简短版)
我对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 重新渲染放在桌子上:“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>
根据本教程丰富的 3.x和此示例(丰富的 3.3),我也尝试过没有成功的ajaxKeys
如果您有任何可能的解决方案,请告诉我。
我的错误已修复。错误不是渲染。但是渲染的条件是在被渲染的组件之外设置的。这导致使用未更新的值重新渲染组件,从而导致屏幕上没有任何变化。
经验教训:如果您有渲染条件,请确保条件值在重新渲染的组件内。