`
yourenyouyu2008
  • 浏览: 282559 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用长对话的"manual" flush-mode ,多操作一次提交

    博客分类:
  • seam
阅读更多

一次长对话访问中可以包括多个页面,每个页面只处理部分数据,但不保存到数据库,最后一起提交到数据库。

长对话可以很好地记录下各部操作的状态,但是默认情况下 flush-mode 是自动更新的,每次页面请求结束后就会更新到数据库里,如果要统一提交就必须更改flush-mode 为manual,让每次操作都不更新到数据库,最后在一起em.flush();

 

在页面配置(refBspgen222.page.xml)中指定manual方式

<page>

 <begin-conversation join="true" flush-mode="manual"/>
</page>

 

在最终要提交数据库的按钮上增加flush actionListener,如下所示

<a4j:commandLink actionListener="#{refBspgenparAction.save}" reRender="addPanel"
     value="submit2" styleClass="button">
     <f:actionListener binding="#{entitySupport.flush()}"/>
    </a4j:commandLink> 

中间不需要更新到数据库的页面上的按钮不要加<f:actionListener binding="#{entitySupport.flush()}"/>

备注:要保证entitySupport.flush()在refBspgenparAction.save之后再执行,要使用actionListener属性,而不是action属性

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics