当事务成功之后(调用 persist()、update() 或 remove() 成功后),Home对象会发出一个 org.jboss.seam.afterTransactionSuccess 事件。通过监听这一事件,我们可以在底层实体改变后,刷新查询。如果我们只需要在特定的实体保存、修改或删除后刷新特定查询,我们可以监视 org.jboss.seam.afterTransactionSuccess.<name> 事件(<name> 是实体的名字)。
当一个操作成功时,Home对象可以自动地显示Faces信息,我们可以再一次通过配置来定制信息。
<factory name="person"
value="#{personHome.instance}"/>
<framework:entity-home name="personHome"
entity-class="eg.Person"
new-instance="#{newPerson}">
<framework:created-message>New person #{person.firstName} #{person.lastName} created</framework:created-message>
<framework:deleted-message>Person #{person.firstName} #{person.lastName} deleted</framework:deleted-message>
<framework:updated-message>Person #{person.firstName} #{person.lastName} updated</framework:updated-message>
</framework:entity-home>
<component name="newPerson"
class="eg.Person">
<property name="nationality">#{country}</property>
</component>
或者扩展:
@Name("personHome")
public class PersonHome extends EntityHome<Person> {
@In Country country;
@Factory("person")
public Person initPerson() { return getInstance(); }
protected Person createInstance() {
return new Person(country);
}
protected String getCreatedMessage() { return "New person #{person.firstName} #{person.lastName} created"; }
protected String getUpdatedMessage() { return "Person #{person.firstName} #{person.lastName} updated"; }
protected String getDeletedMessage() { return "Person #{person.firstName} #{person.lastName} deleted"; }
}
但是指定信息最好的方法是把信息置于Seam所知的resource bundle中(在默认情况下,这个bundle叫做 messages )。
Person_created=New person #{person.firstName} #{person.lastName} created
Person_deleted=Person #{person.firstName} #{person.lastName} deleted
Person_updated=Person #{person.firstName} #{person.lastName} updated
这样方便进行国际化,从表现层的角度考虑也保持了代码和配置的整洁。
最后一步是使用 <s:validateAll> 和 <s:decorate> 向页面中添加验证功能,我会把这个留给你们自己去实现。
分享到:
相关推荐
2. **事件处理**:Seam扩展了JSF的事件处理机制,允许开发者定义更复杂的业务逻辑事件,并在组件间传递。 3. **事务管理**:Seam自动管理Hibernate的事务,使得开发者无需编写繁琐的事务控制代码。在JSF动作事件...
2. **JPA集成**: Seam支持JPA,方便地处理数据库操作,包括实体管理和事务控制。 3. **EJB 3集成**: Seam与EJB 3的集成,使得企业级服务的开发变得简单,如会话bean、实体bean等。 4. **WS和JMS集成**: Seam还提供...
Seam扩展了CDI,增加了更多的上下文和事件支持,使得组件之间的协作更加灵活。 除了上述核心功能,Seam还提供了AOP(面向切面编程)支持、强大的国际化和本地化功能、安全管理以及测试工具等。其中,AOP使得开发者...
除此之外,Seam UI组件扩展了JSF的功能,提供了一系列高级组件和功能,如数据绑定、国际化、验证和转换等。这些组件通常以`.jar`文件形式存在,例如`seam-components.jar`,包含了各种UI相关的组件和工具。 还有...
Seam 2.0与JSF紧密集成,提供了组件扩展和增强,如Seam Faces,增强了JSF的表单处理和导航能力。 2.2 EJB(Enterprise JavaBeans)支持 Seam 2.0通过其EJB容器,让开发者可以方便地创建和管理EJB组件,同时支持EJB ...
它不仅与Java Persistence API(JPA)紧密配合,实现了数据持久化,还通过Seam Transactions管理事务,确保了业务操作的完整性和一致性。此外,Seam还支持Spring、Hibernate等流行框架,使得开发者可以充分利用现有...
Seam简化了组件间的通信,提升了开发效率,并且具有很好的灵活性和可扩展性。 《Seam in Action》是一本英文原版的权威教材,由Dan Allen等作者编写。这本书深入浅出地介绍了如何使用Seam进行实际项目开发,涵盖了...
此外,Seam还整合了`EJB`,使得开发者可以轻松地利用EJB的强大功能,如事务管理、安全性和可扩展性。 `Ajax`支持使得Seam应用能够实现部分页面更新,提供更流畅的用户体验。Seam与`RichFaces`的集成则进一步增强了...
Seam是一个Java EE框架,它将企业...在实践中,不断探索Seam的高级特性,如CDI(Contexts and Dependency Injection)、EJB(Enterprise JavaBeans)集成、以及安全和事务管理,将有助于进一步提升开发效率和应用质量。
《JBoss Seam》是另一本关于Seam的著作,它不仅介绍了Seam的基本功能,还提供了高级特性的深入讨论,包括事务管理、安全性、AOP(面向切面编程)和实时通信等。这本书有助于开发者更全面地理解和掌握Seam框架,提升...
在Seam工程中,EJB常被用作业务逻辑层,处理数据库操作、事务管理等。EJB有三种主要类型:Stateless Session Beans(无状态会话豆)、Stateful Session Beans(有状态会话豆)和Message-driven Beans(消息驱动豆)...
3. **Seam 消息系统**:Seam 引入了一个强大的消息系统,可以用于在不同的组件之间传递消息,增强了应用的灵活性和扩展性。 #### 四、Seam 项目的标签与项目创建 1. **Seam 项目标签**:Seam 项目中的标签通常是...
5. **Faces-Context增强**:Seam扩展了JSF的Faces-Context,允许在非请求上下文中访问和更新模型数据,解决了传统JSF的一些限制。 6. **持久性集成**:Seam集成了Hibernate等ORM(对象关系映射)工具,使得数据库...
- **面向切面编程**:通过AOP(Aspect Oriented Programming),Seam能够为组件添加横切关注点,如事务管理、安全控制等。 - **生命周期管理**:Seam对组件的生命周期进行了细致的管理和控制,包括初始化、渲染、...
9. **Seam工具和扩展**:探索Seam的开发工具,如Seam-gen生成器,以及社区开发的各种扩展,如Seam Mail和Seam Security。 10. **最佳实践和案例研究**:通过实际的项目示例,学习如何在实践中应用Seam的最佳实践,...
Seam、Spring、Hibernate和RichFaces是Java Web开发中的四大框架,它们的集成可以构建功能强大的企业级应用程序。本文将详细解析这四个组件的核心概念、它们如何协同工作以及配置过程。 **Seam框架** Seam是一款...
5. **统一表达式语言**:Seam扩展了JSF生命周期,通过统一表达式语言(EL)促进了不同技术间的通信,增强了开发者体验。 在第一章中,作者探讨了Seam如何解决Java开发者面临的挑战,比如JSF的复杂性、EJB的历史问题...
- **事务管理**:Seam还提供了一套事务管理机制,用于确保数据的一致性和完整性。 #### 四、快速开发与业务需求 - **安全机制**:Seam内置了强大的安全功能,用于保护Web应用程序免受攻击。 - **AJAX与JavaScript...