我在数据表中有一个丰富的日历组件:
<rich:column id="last_#{row.index}" >
<rich:calendar id="lcal_#{row.index}"
value="#{_obj.list[row.index].lastTaught}">
<a4j:support event="onchanged"
action="#{_obj.list[row.index].setBooleanDateHasBeenChanged}"
ajaxSingle="true" reRender="last_#{row.index}" />
</rich:calendar>
</rich:column>
当用户更改日期时,我需要将字段设置为 true(我需要知道稍后为 db update 更改了哪些行,我想一次更新一堆行):
/**
* when someone changes the last taught field, set has been edited to true
*/
public void resetHasBeenEdited(){
this.hasBeenEdited = true;
}
当我更改调用 setBooleanDateHasBeenChanged 方法的日期并在支持 bean 中更新 _obj.list 时,但是当我在重新渲染后检查 _obj 时,hasBeenEdited 字段不反映更改。
我尝试使用 valueChangeListener (更改方法签名以匹配):
<rich:column id="last_#{row.index}" >
<rich:calendar id="lcal_#{row.index}"
value="#{_obj.list[row.index].lastTaught}"
valueChangeListener="#{_obj.list[row.index].setBooleanDateHasBeenChanged}">
<a4j:support event="onchanged"
ajaxSingle="true" reRender="last_#{row.index}" />
</rich:calendar>
</rich:column>
但随后 setBooleanDateHasBeenChanged 甚至没有运行。如何获得更新支持 bean 并在重新呈现的 JSF 模型中反映该更改的操作?我正在使用 JSF1.2、RF3.3 和 Seam2.2。