Seam学习笔记

FAQ

seam的英文意思是:缝、接合处。seamless即“无缝地”。

1. Seam有什么价值?为什么要学习SeamSeam本身有没有提供什么新技术?

A: 它通过把JSFEJB3.0组件合并在一起,从而为开发基于Web的企业应用程序提供一个最新的模式。Seam可以让你把EJB组件直接绑定到 JSF 页面。Seam还可帮助你把jBPM流程定义直接地集成到你的应用程序中。

   Seam目的是将各种框架“无缝地”整合。所以Seam本身也提供了一些类库特别是@annotation进行接合。

 

2. Seam提供了什么特性?

A:  ①摆脱了对繁琐的JSF managed bean(JSF受管bean)的配置。

    JSF页面中的基于event可以调用后台ManagedBean的指定方法,而Seam可以调用后台Seam组件的指定方法。例如action="#{register.register}"

    ②将JSFEJB 3.0整合

    事实上,任何Java类都可以是一个Seam组件,这包括EJB组件类。而EJB组件可以交由EJB容器管理。

    ③集成AJAX——JBoss RichFacesICEfaces

    ④集成JBoss RichFacesICEfaces

 

 

3. 常用注解,如@Name,@Scope,@In,@Out

A:这些注解一般是在org.jboss.seam.annotations.*package下。

 @Name——  @Name("componentName") 为一个类定义一个Seam组件。所有Seam组件都需要该注解。

 @Scope—— @Scope(ScopeType.CONVERSATION) 定义默认的组件上下文。

 @In—— @In(value="contextVariableName")  在每次组件调用开始时从上下文中为此属性进行注入,value相当于指定beanName

 @Out—— @Out(scope=ScopeType.SESSION) 在调用结束后注射出Seam组件属性到上下文变量。

     例如可以对class EditCustomerActionCustomer customer字段表明:

                @In(create=true)

                @Out

                Customer customer;

以及一些用于JSF的注解,例如:

@Converter——允许一个Seam组件作为JSF转换器(JSF Converter),必须实现javax.faces.convert.Converter接口。

@Validator——允许一个Seam组件作为JSF验证器(JSF Validator),必须实现javax.faces.validator.Validator接口。

以及@DataModel

 

4. SeamSpring的区别和结合

A:和Seam的双向注入(bijection)不同,Spring的注入并不是在方法调用时,而是发生在Spring Bean初始化时。

   ①可以在SpringXML配置文件中,将Seam组件注入到SpringBean中去。

   ②在faces-config.xml中,加上

    <variable-resolver>

        org.springframework.web.jsf.DelegatingVariableResolver

    </variable-resolver>

    配置,就可以通过EL表达式在Seam组件中注入SpringBean。例如@In("#{bookingService}")

   ③将Spring Bean转换为Seam组件。通过<seam:component/>

 

   

Seam涉及的jar包:  

jboss-seam-*.jar

jboss-cache.jar

jboss-common-core.jar

jboss-deployers-client-spi.jar

jboss-deployers-core-spi.jar

jboss-el.jar

jboss-embedded-api.jar

richfaces-*.jar

drools-*.jar

jsf-*.jar

hibernate-*.jar

jbpm-jpdl.jar

ejb-api.jar

persistence-api.jar

其他常用的jar    

 

你可能感兴趣的:(spring,jboss,Richfaces,JSF,seam)