`
zcdxzsz
  • 浏览: 74661 次
  • 来自: ...
社区版块
存档分类
最新评论

[转]Seam增强了JSF

    博客分类:
  • java
阅读更多
Seam采用的JSF作为表现层技术,但是标准的jsf有很多的不足之处。

1. JSF对POST方法的http request的依赖太强了,只有POST请求的数据才能直接绑定到后台的组件上,GET方法的则不可以。
2. 根据JSF的规范,当收到一个GET请求后,JSF走完RESTORE VIEW PHARSE 就会直接到RENDER RESPONSE PHARSE,而不会做INVOKE APPLICATION,所以GET方法的请求不能触发业务逻辑。

这些限定让JSF在某些方面不太方便,比如书签功能。因为浏览器的书签都是记下当前页的URL,而不会记下POST请求里的参数。SEAM虽然采用了JSF,但是加入了Page parameter 和 page action,弥补了JSF在这方面的缺陷。

Page parameter是将GET请求时的参数直接绑定到组件上的技术。Page action则是在生成页面之前调用业务逻辑的技术。这两者的配置都可以在WEB-INF/pages.xml或者 *.page.xml里完成。比如:

    <page view-id="/calculator.jsp" action="#{calculator.calculate}">
       <param name="x" value="#{calculator.lhs}"/>
       <param name="y" value="#{calculator.rhs}"/>
       <param name="op" converter="#{operatorConverter}" value="#{calculator.op}"/>
    </page>


上 面的配置,会让用GET方法访问/calculator.jsp时的参数x, y, op分别绑定到calculator的lhs, rhs和op属性上,然后执行calculator的calculate()方法。如果你只需要在页面上传递参数,而并不需要绑定到某个组件上,只需要写成:

    <page view-id="/calculator.jsp" >
        <param name="result" />
    </page>


这样以GET方法传来的名为result的参数将继续以result为名字在Page Scope内传递下去。

Page action 还可以按条件执行:

    <page view-id="/calculator.jsp" >
       <param name="x" value="#{calculator.lhs}"/>
       <param name="y" value="#{calculator.rhs}"/>
       <param name="op" converter="#{operatorConverter}" value="#{calculator.op}"/>
       <action execute="#{calculator.calculate}" if="#{calculator.op != null}" />
    </page>


除了在pages.xml, *.page.xml里配置,还可以用seam的组件s:link s:button来实现指定page action,例如:

    <s:link view="/calculator.jsp" action="#{calculator.calculate}" ></s:link>


这 样,当这个链接被点击后,会引发一个对/calculator.jsp的GET请求,并且在生成/calculator.jsp页面之前执行 #{calculator.calculate} 方法。如果用普通的h:commandLink的话,则会提交表单,引发POST请求。

使用page action时要注意,在处理POST请求的时候,page action会在INVOKE APPLICATION PHARSE之后执行。
分享到:
评论

相关推荐

    seam+jsf+richfaces+ajax4jsf 电子书

    Seam、JSF、RichFaces 和 Ajax4jsf 是四个重要的Java Web开发框架和技术,它们在构建现代、交互式Web应用程序中发挥着关键作用。让我们深入探讨这些技术及其结合使用时的知识点。 **1. Seam** Seam是一个开源的Java...

    seam,jsf,ajax4jsf的大全资料集合

    Ajax4jsf是一个基于JSF的Ajax扩展库,它增强了JSF的用户体验。主要特性包括: 1. **异步更新**:Ajax4jsf允许部分页面刷新,提高Web应用的响应速度。 2. **预定义组件**:提供了一系列预定义的Ajax组件,如滑块、...

    seam+jsf+richfaces+ajax4jsf打包了

    Ajax4jsf是另一个增强JSF功能的库,专注于利用AJAX技术来提升用户界面的响应速度和交互性。它提供了预定义的AJAX行为和组件,使开发者无需深入了解底层AJAX技术就能实现异步更新。通过学习Ajax4jsf的常用标签讲解,...

    Seam-无缝集成JSF

    具体来说,Seam对JSF生命周期进行了增强,主要包括以下几个方面: 1. **上下文状态管理**:Seam提供了更灵活的会话管理和组件状态保存机制,确保在复杂的交互场景下应用的状态得以正确维护。 2. **RESTful URL支持...

    JSF项目中seam的配置

    Seam通过这个监听器能够增强JSF的各个阶段,并引入CONVERSATION生命周期,这是Seam的一个核心特性。 ```xml &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener ``` 2. **seam.properties文件**:在...

    seam jsf ejb 资源相关连部分

    - **IDE支持有限:**虽然有所改善,但相比Struts,JSF的IDE支持仍需加强。 - **验证框架:**JSF的内置验证机制在某些情况下可能不够完善。 - **客户端验证:**JSF对客户端的验证支持不够充分。 - **请求方法限制:**...

    Beginning JSF2 APIs and JBoss Seam

    - **互补性**:JSF2提供了丰富的组件库和强大的视图管理功能,而Seam则加强了组件之间的交互和会话管理。两者的结合可以显著提升开发效率和应用质量。 - **最佳实践**:例如,在开发复杂的表单时,可以利用Seam的...

    Seam项目源代码(基于JBoss和EJB3,JSF的项目源码)

    3. **事件驱动**:Seam的事件模型允许在组件之间传递消息,增强了组件间的通信能力。 4. **数据绑定**:Seam与JSF紧密集成,使得数据模型可以直接与用户界面元素进行双向绑定,简化了数据管理。 5. **安全性和事务...

    Seam - 无缝集成 JSF

    JavaServer Faces (JSF) 是用于 Java™ Web 应用程序的第一个标准化的用户界面...Dan Allen 介绍了 Seam 对 JSF 生命周期的增强,包括上下文状态管理、 RESTful URL、Ajax remoting、适当的异常处理和约定优于配置。

    JSF+Seam帮助文档.rar

    Seam的强项在于其对JSF的增强,例如它提供的导航控制、自动数据绑定和转换等特性,使得JSF的应用开发更为便捷。 **J2EE(Java 2 Platform, Enterprise Edition)**是Java平台的企业版,用于开发和部署多层结构的、...

    jsf-seam-jpa文档

    Seam 是一个强大的Java EE框架,它通过整合和强化Java EE 5的多个核心组件,如JSF(JavaServer Faces)和EJB 3.0,来提供一个统一且高效的开发体验。Seam的设计目标是简化Web应用的复杂性,特别是对于有状态的Web...

    jboss seam 学习资料,seam in action和官方手册

    2. **JSF集成**:学习如何利用Seam增强JSF,实现更强大的用户界面交互。 3. **EJB 3.0集成**:探讨Seam如何简化EJB的使用,使业务逻辑处理更为简便。 4. **安全与身份验证**:了解Seam的安全特性,如身份验证、授权...

    《SeamInAction》+《JbossSeam》+《官方中文指南》

    RichFaces是Seam中的一个增强JSF功能的库,提供了丰富的AJAX支持;JBoss是Red Hat公司开发的应用服务器,它支持并推荐使用Seam框架。 在实际开发中,开发者可以通过这些资源学习如何使用Seam进行组件注入、依赖管理...

    jboss seam introduce

    **JBoss Seam简介** JBoss Seam 是一个开源的...通过学习《Improve and Expand JSF with Seam》,开发者可以更好地理解和掌握如何利用Seam框架增强JSF的功能,从而在企业级应用开发中实现更高的效率和更佳的用户体验。

    JBOSS SEAM组件中文手册

    1. **Faces Context增强**: 在Seam 2.0中,对JSF的Faces Context进行了扩展,提供了更多的上下文信息和操作。 2. **CDI支持**: 虽然Seam 2.0发布时,Contexts and Dependency Injection (CDI)规范还未正式发布,但...

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

    Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................

    Seam框架文档简述

    Seam支持JSF标准,这意味着开发者可以直接使用JSF提供的丰富UI组件。此外,Seam还扩展了JSF的功能,提供了更多定制化和高级的组件,以满足复杂应用的需求。 ##### 2. 支持EJB 3.0但也可以独立于EJB 尽管Seam紧密...

    为 JSF 量身定做的应用程序框架

    为 JSF 量身定做的应用程序框架,JavaServer Faces (JSF) 是用于 Java™ Web 应用...Dan Allen 介绍了 Seam 对 JSF 生命周期的增强,包括上下文状态管理、 RESTful URL、Ajax remoting、适当的异常处理和约定优于配置。

    seam经典教程含例子

    5. **Seam与JSF的整合**:展示如何通过Seam实现JSF组件的扩展和增强,以及数据绑定和事件处理。 6. **Seam的其他特性**:如Infinispan缓存支持、FacesContext的扩展、国际化的处理等。 7. **实战例子**:提供具体的...

Global site tag (gtag.js) - Google Analytics