论坛首页 Java企业应用论坛

Seam页面conversation作用域的控制问题

浏览 3036 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-09-13  
seam框架中的conversation是个非常的棒的东西,但是在页面开启长对话后,结束的方法比较困惑,使用@End注解终觉得不踏实。我现在尝试的事件驱动模型解决方案如下。
    在导航文件中如下配置:
   
	<page view-id="/test/*" login-required="true"></page>
	<page view-id="/test/listDepartment.xhtml">
	<action execute="#{org.jboss.seam.core.events.instance().raiseEvent('pageScopeControl', 'department')}"/>
		<navigation from-action="#{departmentBean.add}">
			<redirect view-id="/test/editDepartment.xhtml" />
		</navigation>
	</page>
   


   然后建立一个Observer组件:
   @Name("pageScopeObserver")
@Scope(ScopeType.SESSION)
public class PageScopeObserver {
	private String curPageScope;
	private String prePageScope;
	
	
	@In(value = "org.jboss.seam.core.conversation",required = false)
	Conversation conversation;
	
	@Observer("pageScopeControl")
	synchronized public void fetchPageScopeEvent(String pageEvent) {
		curPageScope = pageEvent;
		if (curPageScope.equals(prePageScope) == false) {
			prePageScope = curPageScope;
			if (conversation != null) {
				conversation.end();
				conversation.leave();
			}
		}	
}
 

这样可以实现通过定制各种不同的事件类型,将单个页面或一组页面的conversation管理起来。
希望大家提点意见。
   发表时间:2008-09-27  
换汤不换药!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics