春天的Webflow 2和可收藏的网址(Spring Webflow 2 and bookmarka

2019-10-17 10:56发布

目前,由于邮政/重定向/获取模式的所有流网址都是像<site_url>/flow_name?execution=? 输入GET参数不会保留。 因此,用户不能复制URL,或书签它。

任何建议怎么会这样整齐呢?

Answer 1:

我们可以通过自定义SWF API的FlowHandlerAdapter书签基于SWF应用程序的URL。

下面是一个例子:

我的SWF的配置文件将有:

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

     <bean id="customFlowHandlerAdapter" class="com.xyz.CustomFlowHandlerAdapter">
        <property name="flowExecutor" ref="flowExecutor" /> 
        <property name="flowUrlHandler" >
            <bean class="com.xyz.CustomURLFlowHandler" /> 
        </property>
     </bean>

我CustomFlowHandlerAdapter将有:

public class CustomFlowHandlerAdapter extends FlowHandlerAdapter {

...

@Override
    public ModelAndView handle(HttpServletRequest request,
            HttpServletResponse response, Object handler) throws Exception {
        FlowHandler flowHandler = (FlowHandler) handler;
        checkAndPrepare(request, response, false);
        String flowExecutionKey = this.getFlowUrlHandler()
                .getFlowExecutionKey(request);
        if (flowExecutionKey != null)
            try {
                ServletExternalContext context = createServletExternalContext(
                        request, response);
                FlowExecutionResult result = this.getFlowExecutor().resumeExecution(
                        flowExecutionKey, context);
                handleFlowExecutionResult(result, context, request, response,
                        flowHandler);
            } catch(org.springframework.webflow.execution.repository.NoSuchFlowExecutionException ex){
                response.sendRedirect(request.getRequestURI());
            } catch(org.springframework.webflow.execution.repository.BadlyFormattedFlowExecutionKeyException ex){
                response.sendRedirect(request.getRequestURI());
            } catch (FlowException e) {
                handleFlowException(e, request, response, flowHandler);
            }
....

这里荫醒目NoSuchFlowExecutionException和我重定向到确切的流URL不带任何参数。 在这里,您可以捕捉并重新提供您的参数

因此,我能够书签我的网址从任何状态(永远都是流从第一场首发)也,我将能够在必要时送我自己的参数。



Answer 2:

你可以随时使用和书签链接到你的流量的起点之一。
例如,你可以做<site_url>/flow_name?personId=123&projectId=456假设你有两个输入您的流动personIdprojectId 。 但是你需要知道URL(你必须把它给用户),你不能使用你的地址栏上的一个。

即使你想这样做,你将无法使用,并在你的流动书签链接到特定状态(除非你添加一些逻辑到你的流量开始引导您到一个特定的事件取决于值的输入)。



文章来源: Spring Webflow 2 and bookmarkable URLs