`
pertghost
  • 浏览: 1044 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

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

阅读更多
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管理起来。
希望大家提点意见。
分享到:
评论
1 楼 pikachu 2008-09-27  
换汤不换药!

相关推荐

    Jboss Seam中文版

    3. **组件名称和作用域**:讲解了如何定义组件的名字以及它们的作用范围。 4. **双向注入**:描述了Seam如何支持组件之间的相互引用。 5. **生命周期方法**:介绍了组件在不同阶段触发的回调方法,帮助开发者更好地...

    JSF项目中seam的配置

    2. **@Scope**:定义组件的作用域,如`Page`, `Event`, `Session`, `Application`, 和 `Conversation`。`Conversation`是Seam特有的,它可以维持跨越多个HTTP请求的状态,这对于保持某些数据的持久性非常有用,尤其...

    jboss-seam 注解

    ### jboss-seam 注解详解 ...以上是对JBoss Seam中常用注解的详细介绍,这些注解可以帮助开发者更好地管理和控制组件的行为和作用域。通过合理地使用这些注解,可以有效地提高应用程序的性能和可维护性。

    jboss seam 中文文档

    - **定义组件作用域**:通过配置文件或注解,可以指定组件的作用域,如会话作用域、请求作用域等。 - **具有多个角色的组件**:一个组件可以扮演不同的角色,这增加了组件的灵活性。 - **内置组件**:Seam 提供了一...

    Seam - 语境相关的组件 .pdf

    Seam组件可以是无状态Session Bean、有状态Session Bean、实体Bean、JavaBeans、消息驱动Bean等,支持拦截器、多角色组件以及自定义作用域,为开发者提供了灵活的编程模型。 综上所述,Seam是一个强大的Java EE框架...

    Seam 例子 Hello World

    - `@ScopeType("conversation")`:指定组件的作用域为会话范围,这意味着它会在用户会话期间保持状态。 #### 八、配置和部署 - **Ant构建脚本**:使用Ant构建工具来编译项目,并生成可部署的`.ear`文件。 - **部署...

    jboss seam 注解

    - **`@Conversational`**: 声明组件为对话作用域,确保组件方法仅在长期运行的对话活动时可被调用。 #### 六、`@Startup` - **`@Startup`**: 用于Application或Session Scope的组件,使其在相应的上下文创建时立即...

    Seam_Reference_Guide

    这一模型将应用程序中的组件放置于不同的“情境”中,每个情境都有其特定的生命周期和作用域,从而使得组件能够在不同的情境下表现出不同的行为。情境组件模型包括以下几种主要情境: 1. **状态无情景境(Stateless ...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    1.5. Seam 页面流:猜数字范例........................................................................................................................................ 40 1.5.1. 理解代码....................

    seam 注解 pdf

    `name`属性定义了上下文变量的名字,而`scope`属性定义了上下文变量的作用域。 ##### 4. `@Roles` 注解 - **用途**:允许一次性指定多个`@Role`注解。 - **示例**: ```java @Name("userComponent") @Roles({ ...

Global site tag (gtag.js) - Google Analytics