领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多我最近解决了一个 Spring Web Flow 中有趣的问题。这个问题 (SWF-163) 涉及为 Spring Web Flow 的内部作用域添加 Spring 2.0 Bean 作用域支持。实现本身并不太有趣(毕竟 Scope 接口很容易实现),但我想要具体说明如何在应用程序中使用这样的功能。
使用最新的 Spring Web Flow 1.1 快照,我们现在可以看到三个主要的 Web Flow 作用域的 Bean 作用域,flash、flow 和 conversation。
<bean id="sale" class="org.springframework.webflow.samples.sellitem.Sale" scope="flash"/>
<bean id="sale" class="org.springframework.webflow.samples.sellitem.Sale" scope="flow"/>
<bean id="sale" class="org.springframework.webflow.samples.sellitem.Sale" scope="conversation"/>
要使用这些 Bean 作用域,您需要利用 1.1 版本的配置(包含在 Web Flow jar 中)并在 Bean 定义中添加一个元素。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:flow="http://www.springframework.org/schema/webflow-config"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/webflow-config
http://www.springframework.org/schema/webflow-config/spring-webflow-config-1.1.xsd">
<flow:enable-scopes/>
<bean id="sale" class="org.springframework.webflow.samples.sellitem.Sale" scope="conversation"/>
</beans>
<enable-scopes/> 标签在一个给定的应用程序上下文中只需要存在一次,它允许您使用 Spring Web Flow 提供的任何三个作用域。
<?xml version="1.0"?>
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
"http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
<faces-config>
<application>
<navigation-handler>
org.springframework.webflow.executor.jsf.FlowNavigationHandler
</navigation-handler>
<variable-resolver>
org.springframework.web.jsf.DelegatingVariableResolver
</variable-resolver>
</application>
<lifecycle>
<phase-listener>
org.springframework.webflow.executor.jsf.FlowPhaseListener
</phase-listener>
</lifecycle>
</faces-config>
与之前的 Web Flow 启用配置相比,主要变化在于现在变量解析器来自 Spring,而不是 Spring Web Flow。当 JSP 页面查找 sale 变量时,JSF 将委托给 Spring 进行 Bean 解析,并且 Bean 实例的作用域将根据其定义上的 scope 属性确定。
如果您想使用此新功能,它将很快随 Spring Web Flow 1.1-m1 版本一起发布,或者您可以通过下载最新的 Spring Web Flow 1.1-m1 夜间快照 来预览。