adf 有很多坑,其中之一就是
popup
,popup
会缓存上次的状态,如果在popup
内部有输入框,那么下次进入时文本框内容会停留在上次的状态,不会刷新,即使设置了contentDelivery="lazyUncached"
属性也没有作用。
最近在做adf项目时,就被这个问题困扰了。主要问题在于,如果我的按钮使用了immediate
属性,就会存在缓存问题,而不使用该属性,表单校验不通过就无法取消popup
。
其实要填这个坑也很容易。
首先,不要使用dialog
自带的按钮,换成自己的按钮
然后,在用于取消编辑的按钮中加入resetActionListener
,如下:
<af:commandToolbarButton id="b4" text="取消"
actionListener="#{pageFlowScope.sysManageBean.cancel}"
icon="/resource/images/icons/undo.gif"
immediate="true">
<af:resetActionListener/>
</af:commandToolbarButton>
重新运行,缓存问题被完美解决了
当然,也可以使用taskflow
做 inlinepopup
,这样也不会存在缓存问题
最后,再提一下dialog
自带按钮的一个坑,如果使用okcancel
模式,那么点击cancel
时,并不会回调dialog
的listener
。如果在listener
内做rollback
操作,是行不通的,dialog
最好使用自己定义的按钮
网友评论