快速业务通道

Spring Web Flow 2.0入门 - 用Unified EL实现业务逻辑 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
em(productService.getProduct(productId))"/>  <transition to="productAdded"/> </action-state>

业务逻辑代码在调用后得到的数据如何保存、传递?

Spring Web Flow 的定义中可直接使用表达式语言( Expression Language ),前面的代码都是用的 Unified EL ,对于习惯用 OGNL 的开发人员,可通过 flow-builder-services 的配置改成使用 OGNL 。不管是哪一种表达式语言, Spring Web Flow 都提供了一些固定名称的变量,用于数据的保存、传递。在 Spring Web Flow 的解决方案 一节中,已经提到 Spring Web Flow 所着力解决的问题即是数据存取范围的问题,为此, Spring Web Flow 提供了两种比较重要的范围,一是 flow 范围,另一个是 conversation 范围。通过 flowScope 和 conversationScope 这两个变量, Spring Web Flow 提供了在这两种范围里存取数据的方法。清单 24演示了如何将业务逻辑代码执行的结果存放到flow范围中。

清单 24 flowScope 示例

<evaluate expression="productService.getProducts()" result="flowScope.products" />

Spring Web Flow 还提供了大量其他的变量,以方便数据的存取。如 viewScope 范围即是从进入 view-state 至退出 view-state 结束, requestScope 即和一般的 request 范围没什么区别,等等。另外还有一些用于获取 flow 以外数据的变量,如 requestParameters 、 messageContext 等等。具体变量的列表可参看 Spring Web Flow自带的文档。

为示例应用添加商品

接下来,我们要在示例应用的 viewCart.jsp 页面中添加商品,可按以下步骤操作:

添加 Product 类

添加 ProductService 类

修改 shopping.xml 文件

修改 viewCart.jsp 页面

Spring Web Flow 2.0入门 - 用Unified EL实现业务逻辑(3)

时间:2011-02-01 IBM 吕焱飞

添加 Product 类

Product 类是个普通的 JavaBean ,用于定义商品( Product )的一般属性,同时也提供了构造方法。由于会把 Product 存放于 conversationScope 中, Product 实现了 Serializable 接口。具体见清单25:

清单 25 Product 类

package samples.webflow; import java.io.Serializable; public class Product implements Serializable {   private static final long serialVersionUID = 1951520003958305899L;   private int id;   private String description;   private int price;   public Product(int id, String description, int price) {     this.id = id;     this.description = description;     this.price = price;   }   /*省略getter和setter*/ }

添加 ProductService 类

ProductService 主要提供商品列表,并能根据商品的 id 查找出该商品,由于示例较简单,这里只添加了三条纪录。见清单 26:

清单 26 ProductService 类

package samples.webflow; /*省略import语句*/ @Service("productService") public class ProductService {   /*products 用于存放多个商品 */   private Map<Integer, Product> products = new HashMap<Integer, Product>();   public ProductService() {     products.put(1, new Product(1, "Bulldog", 1000));     products.put(2, new Product(2, "Chihuahua", 1500));     products.put(3, new Product(3, "Labrador", 2000));   }   public List<Product> getProducts() {     return new ArrayList<Product>(products.values());   }   public Product getProduct(int productId) {     return p

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号