Spring Web Flow 请求映射

标签 spring spring-mvc mapping spring-webflow-2

我正在将 Spring Web Flow 2 添加到当前不使用 Spring MVC 或 Web Flow 的非常大的现有 Web 应用程序中。我的任务是通过访问 mySite.com/flows 来触发 Web Flow,但我遇到了困难。我的方法是使用 /flows/* 的映射来设置 DispatcherServlet。并将 Web Flow 映射到 /flows .这是我的 web.xml,其中配置了 DispatcherServlet:

<servlet>
    <servlet-name>flow</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/flowContext.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>flow</servlet-name>
    <url-pattern>/flows/*</url-pattern>
</servlet-mapping>

我尝试了几种方法来让 Web Flow 映射到 /flows .我的第一次尝试是使用带有 base-path 的流注册表。环境:
<webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices" base-path="/WEB-INF/app/flows">
    <webflow:flow-location-pattern value="**/*-flow.xml" />
</webflow:flow-registry>

我的理解是,这将采用 /WEB-INF/app/flows 中的文件夹结构。创建请求映射。我的第一个测试是添加我的流程,booking-flow.xml在名为 booking 的子文件夹中( /WEB-INF/app/flows/booking )。而且,太棒了! - 它按预期工作。我能够从 mySite.com/flows/booking 访问流程。好的,但我不想要 /booking在 URL 中,所以我移动了 booking-flow.xml出了booking文件夹,然后直接进入 WEB-INF/app/flows并期望这对我有用,但它没有 - 我认为流程根本没有映射。

有谁知道我如何将流映射到 DispatcherServlet 映射的根,或者有更好的方法来解决这个问题吗?我不希望 DispatcherServlet 处理 /flows 之外的任何请求在我的应用程序中。是我一个人,还是 Spring Web Flow 上的文档很少?

谢谢!

最佳答案

您可以使用 SimpleUrlHandlerMapping通过这种方式将您的流程映射到 mySite.com/flows

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings" value="flows=flowController" />
</bean>

<bean id="flowController" class="org.springframework.webflow.mvc.servlet.FlowController">
    <property name="flowExecutor" ref="flowExecutor" />
</bean>

<webflow:flow-executor id="flowExecutor" flow-registry="flowRegistry">
</webflow:flow-executor>

<webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices" base-path="/WEB-INF/app/flows">    
    <webflow:flow-location path="booking-flow.xml" id="flows"/>
</webflow:flow-registry>

关于Spring Web Flow 请求映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11295635/

相关文章:

java - Spring - 映射多个 url 模式

java - 找到了多个名为 [spring_web] 的片段。这对于相对顺序是不合法的

javascript - 如何从 react 中的映射数据中过滤数据

nhibernate - 如何在 NHibernate 中使用 CompositeId 级联保存?

java - Spring JDBC 不使用 log4j 记录 SQL

java - 在 Spring Data Commons 2.0.4 中找不到 QueryDslPredicateExecutor

每个用户组或每个用户的 Spring Security 并发 session 控制

java - UnsatisfiedDependencyException Spring MVC 项目上下文根问题

java - 使用Spring Security重新登录时没有消息可用错误

mapping - vim 重新映射 hjkl