我在数据表中有一个rich:calendar组件:
<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,但是当我在rerender之后检查_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。
答案 0 :(得分:0)
我尝试了很多不同的配置,但最终工作的是摆脱ajaxSingle和reRender:
<rich:column id="last_#{status.index}"
<rich:calendar value="#{_obj.list[row.index].lastTaught}" >
<a4j:support event="onchange"
actionListener="#{_obj.list[row.index].resetTaughtHasBeenEdited()}"/>
</rich:calendar>
</rich:column>
reRender操作只会将显示的值重置为之前的设置,而ajaxSingle不会更新模型。