Welcome 微信登录

首页 / 软件开发 / JAVA / Spring Web Flow 2.0入门 - 用Unified EL实现业务逻辑

Spring Web Flow 2.0入门 - 用Unified EL实现业务逻辑2011-02-01 IBM 吕焱飞到现在为止,这个购物车应用只是实现了页面之间的跳转,接下来我们要实现与业务逻辑相关的功能。由于本教程的重点在于介绍如何应用 Spring Web Flow ,所实现的业务比较简单,与实际应用有较大的距离,请读者谅解。

业务的逻辑涉及到数据的获取、传递、保存,相关的业务功能函数的调用等内容,这些功能的实现都可用 Java 代码来完成,但定义 Spring Web Flow 的语法与 Java 是无关的,这就要求 Spring Web Flow 提供与 Java 代码的整合机制。要了解这种机制,关键在于搞清楚两个问题:

业务逻辑代码在什么时候被调用?

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

业务逻辑代码在什么时候被调用?

在 Spring Web Flow 中,业务逻辑代码的执行可由以下三种情形来触发:

客户端请求中包含了 _eventId 参数

执行到框架自定义的切入点

执行到 <action-state> 元素

客户端请求中包含了 _eventId 参数

这种方式一般用在 state 之间的 transition ,通过指定 _eventId 参数的值,表明了客户的行为,从而导致相应事件的发生,在 Spring Web Flow 的定义文件中可以通过 evaluate 元素来指定要处理的业务逻辑。参看清单21:

清单 21 transition 示例

<transition on="submit">
<evaluate expression="validator.validate()" />
</transition>

清单 21 的代码表示,当客户端的请求中包含“ _eventId=submit ”,则 evaluate 元素中 expression 属性所指明的表达式会被执行,即 validator 对象的validate 方法会得到调用。

执行到框架自定义的切入点

Spring Web Flow 定义了 5 个切入点,通过 flow 定义文件的配置,可在这 5 个切入点插入相关业务逻辑代码。

表 2 Spring Web Flow 自定义的切入点

切入点名称XML 元素名称触发时刻
flow starton-startflow 执行之前
state entryon-entry进入某个 state 之后,做其他事情之前
view renderon-render在进入 view 的 render 流程之后,在 view 真正 render出来之前
state exiton-exit在退出 state 之前
flow endon-endflow 执行结束之后