`
yangzb
  • 浏览: 3500409 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring webflow示例

阅读更多

spring webflow示例非规范要点说明文档
    本文档着重说明示例中struts与webflow整合的关键点。
1. 配置文件说明:
  1.1 web.xml
  webflow基于spring框架,此处使用一般spring与struts整合方式,引入spring框架
      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/webflow-config.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

  1.2 struts-config.xml
  formbean使用SpringBindingActionForm
      <form-bean name="actionForm" type="org.springframework.web.struts.SpringBindingActionForm"/>
  global-forwards提供给webflow跳转关系
  action-mapping使用保证struts说明,类型使用FlowAction
  <action path="/flowAction"
          name="actionForm"
      scope="request"
      type="org.springframework.webflow.executor.struts.FlowAction"/>

  1.3 webflow-context.xml(spring配置文件)
      <bean id="actionForm" class="...Action" />指定action的class文件

  注册webflow
      <flow:executor id="flowExecutor" registry-ref="flowRegistry"/>
   
    <!-- Creates the registry of flow definitions for this application -->
    <flow:registry id="flowRegistry">
        <flow:location path="/WEB-INF/gateway.xml"/>
    </flow:registry>

  1.4 gateway.xml(webflow配置文件)
  流程
      <start-state idref="xxx" />    <!-- 表明webflow的开始-->

      <view-state id="" view=""><!-- view="" 指向struts配置文件global-forwad -->
          <render-actions>
            <action bean="tvgwformAction" method="setupForm" /> <!-- setupForm对应action中构造方法-->
        </render-actions>
        <transition on="pay" to="processChooseFormSubmit" /> <!-- on="XXX" 接收页面提交的_eventId_XXX-->
        <transition on="cancel" to="cancel" />         <!-- to="XXX" 需对应跳转view-state或action-state的id-->
      </view-state>     
   
      <action-state id="processChooseFormSubmit">
        <action bean="tvgwformAction" method="bindAndValidate" /> <!-- bindAndValidate对应strust的validator-->
        <transition on="success" to="queryAccount" />
        <transition on="error" to="simupay" />        <!-- success&error 对应action方法的result返回值-->
      </action-state>  

      <action-state id="queryAccount">
        <action bean="tvgwformAction" method="queryAccount" />  <!--method对应action方法 -->
        <transition on="success" to="gwForm" />
        <transition on="error" to="error" />
      </action-state>

      <end-state id="resultForm" view="result" />    <!-- 表明webflow的结束-->

2. action类说明
  2.1 action类继承自org.springframework.webflow.action.FormAction
 
  2.2 构造方法需要设置以下参数
    public TvGatewayFormAction(){
        setFormObjectName("tvGateway");    //设置使用formbean的名字
        setFormObjectClass(TvGateway.class);    //设置使用formbean的类
        setFormObjectScope(ScopeType.FLOW);        //设置生命周期
        setValidator(new TvGatewayValidator());    //设置验证方法
    }

    !注意:在验证方法中提供supports方法,注入formBean类
        public boolean supports(Class clazz) {
            return clazz.equals(BirthDate.class);
        }

  2.3 action向页面传递对象
  可以使用context.getRequestScope().put(...)和context.getRequestScope().put(...)两种(实现struts request.setAttribute功能)
  使用context.getRequestScope().put(...),如果对象传递目的地是end-state,页面可以接收到对象的值,如果传递目的地是view-state则不能接收到
  原因:在swf 1.0中缺省alwaysRedirectOnPause开启,意味着,view在重定向之后总是会被收回,也就是说,request会在下一个请求到来时被刷新;
    因此,使用context.getRequestScope().put(String, object)代替

  2.4 view-state to action-state
  为保证action中getFormObject(context)可取得页面提交数据,在webflow配置文件中每次从view-state跳转到action-state都必须
  先调用validator的bindAndValidate,主要目的是使用validator中的support将formBean对象“注入”,从而保证formBean对象在整个flow流程中的一致性。

3. Jsp页面说明
  3.1 页面显示action传递的对象可以采用<bean:write name.../> 或 ${XXX.xx }两种方法

  3.2 webflow响应页面跳转是根据页面提交的_eventId_XXX对应的XXX确定的,
      由于机顶盒界面不使用链接或点击事件做提交,使用javascript响应键盘事件,用js函数处理提交,为区分不同事件产生不同跳转,采用如下方法:
    在javascript中创建html页面元素的方法
    在页面设置一个不可见元素
    <span id="_eventId"/>
    在javascript脚本中添加需要创建的元素
    document.getElementById("_eventId").innerHTML=<...>;
    <...>可如所示 <input type=\"hidden\" name=\"_eventId_cancel\" value=\"Abandon\"/>(临时生成不同_eventId_XXX)

分享到:
评论

相关推荐

    spring webflow的一个例子

    通过这个"CartApp3"示例,开发者可以学习如何利用Spring WebFlow构建复杂的Web应用程序,理解其流程管理机制,以及如何将业务逻辑与视图交互结合在一起。这有助于提升构建动态、流程导向型应用的能力,并对Spring...

    spring webflow 官方中文版权威指南PDF

    13. **实战案例**:提供实际项目中的示例,演示如何使用Spring WebFlow构建一个完整的Web应用。 14. **最佳实践**:给出使用Spring WebFlow的最佳实践,帮助开发者避免常见问题并提升代码质量。 通过深入阅读这本...

    Spring Web Flow权威指南.pdf

    书中重点讲解Web流、流定义语言、流执行、流的测试以及自定义扩展等精髓内容,并结合使用Spring WebFlow 1开发的实例来向读者说明如何将其实际应用到项目中。尤其弥足珍贵的是,作者从框架设计者角度深入阐述了...

    spring web flow reference 2.4.0

    &lt;dependency org="org.springframework.webflow" name="spring-webflow" rev="2.4.0"/&gt; ``` ##### 1.7 夜间构建和里程碑发布 为了使用Spring Web Flow的夜间构建或里程碑版本,可以通过在Maven配置文件中添加如下...

    spring web flow权威指南

    此外,书中的示例和最佳实践将有助于开发者在实际项目中高效地应用Spring Web Flow,提升web应用的架构质量和用户体验。该书还可能涵盖了异常处理、国际化、测试和调试等方面的内容,帮助开发者全方位地理解和掌握...

    Spring Web Flow 2.0 购物车示例

    Spring Web Flow 2.0 购物车示例,资源来自http://www.cnblogs.com/xwdreamer/archive/2011/11/10/2296939.html.建议对照文章学习

    spring webflow 例子

    在这个“spring webflow 例子”中,我们将深入探讨Spring Web Flow如何帮助我们构建一个网上书店应用。 首先,Spring Web Flow的核心概念包括流程定义、状态和转换。流程定义是整个流程的蓝图,它由一系列状态...

    spring web flow入门

    DOCTYPE webflow PUBLIC "-//SPRING//DTD WEBFLOW//EN" "http://www.springframework.org/dtd/spring-webflow.dtd"&gt; &lt;webflow id="bookflight" start-state="obtainTripInfo"&gt; ``` 在这个示例中,`bookflight`...

    spring web flow

    在SWFDemo项目中,你可以找到一个简单的Spring Web Flow示例,通过这个例子,你可以学习如何配置和使用这个框架,从而更好地掌握Spring Web Flow的核心特性和使用技巧。记得通过博文链接...

    spring web flow demo

    本教程分析了 Spring Web Flow 2.0 的技术要点,并且通过创建一个示例应用程序,展示了 Spring Web Flow 2.0 的基本知识。 开始之前 关于本教程 本教程通过一个简化的购物车应用,介绍了如何使用 Spring Web Flow ...

    spring webflow入门基础

    ### Spring Webflow 入门基础 #### 购物车用例 首先,我们通过一个购物车用例来深入理解Spring Web Flow的应用场景及其优势。购物车作为一个典型的电子商务应用场景,涉及用户选择商品、查看购物车内容、确认订单...

    spring webflow 2.0所有最新开发包及文档和用例

    在`spring-webflow-2.0.8.RELEASE`这个压缩包中,你将找到Spring Webflow 2.0.8版本的所有相关资源,包括库文件、文档和可能的示例项目。这些资源可以帮助你搭建开发环境,理解其工作原理,并进行实践操作。 总的来...

    spring webflow升级-从1.0 到 2.0

    ### Spring WebFlow 从 1.0 升级到 2.0 的核心知识点 #### 一、流定义语言的变化 ##### 1.1 引言 Spring WebFlow (SWF) 是一款强大的流程管理框架,它使得创建复杂的Web应用程序变得更为简单。随着技术的发展,从 ...

    Spring Web Flow培训(ppt和项目实例)

    项目实例通常包含完整的代码示例,展示了如何将Spring Web Flow应用到实际项目中。这些例子可以帮助你理解如何配置和使用Spring Web Flow,以及如何解决实际开发中的问题。 10. **学习资源** Spring Web Flow的...

    spring web flow入门demo

    通过分析和运行这个示例,你将了解Spring Web Flow如何组织和控制用户交互,以及如何与Spring MVC框架协作。 为了深入理解Spring Web Flow,建议你逐步研究项目的源代码,查看流程定义、控制器实现、视图配置等部分...

    Spring Web Flow 2 Web Development.pdf

    《Spring Web Flow 2 Web Development》一书深入探讨了Spring Web Flow框架的使用与实践,旨在帮助开发者利用Spring框架的强大功能构建高效、可扩展的Web应用程序。本书由Sven Lüppken和Markus Stäuble共同撰写,...

    Spring Web Flow2入门(二)

    - **webflow-javaConfig.zip**:这个压缩包包含了一个使用Java配置实现的SWF示例,你可以通过解压、构建和运行来观察其工作流程。 - **webflow-xml.zip**:这个示例则展示了如何通过XML配置文件定义和管理Flow。 ...

    Spring Web Flow 2小教程

    通过对上述新特性的详细介绍和示例应用的分析,我们可以看到Spring Web Flow 2.0 在简化复杂交互逻辑方面的强大能力。无论是对于初学者还是经验丰富的开发者来说,掌握这一工具都将极大提升他们在Web开发领域的能力...

    spring-webflow-2.3.1官方jar包

    3. **示例应用**:提供了实际的代码示例,演示了如何在项目中应用Spring WebFlow。 **使用场景** Spring WebFlow特别适合于需要多步骤用户交互的场景,例如购物车结账流程、用户注册、表单提交等。通过它,开发者...

    SPRING WEB-FLOW入门教程

    &lt;webflow&gt; &lt;flow id="booking"&gt; &lt;!-- Action configuration --&gt; &lt;!-- More states and transitions... --&gt; &lt;/flow&gt; &lt;/webflow&gt; ``` 在这个例子中,流程开始于`selectFlight`视图,用户选择航班。...

Global site tag (gtag.js) - Google Analytics