Весенний веб-поток, возврат к основному потоку из любого подпотока

#spring-webflow

#весенний веб-поток

Вопрос:

Я пытаюсь вернуться к своему основному потоку весной из любого из моих подпотоков, просто нажав кнопку.

когда я использую <end-state> , он просто переходит к предыдущему потоку, который также является подпотоком в приложении.

Есть идеи?

Ответ №1:

Вам просто нужны соответствующие переходы в каждом подпотоке-состоянии в вызывающем потоке, чтобы делать то, что вы хотите. Идентификатор конечного состояния в вашем подпотоке — это то, что будет использоваться в качестве идентификатора события, на которое вы можете перейти в вашем вызывающем потоке.

Подпоток можно рассматривать как ветвь выполнения. Итак, когда ваш подпоток завершен, управление возвращается обратно вызывающему потоку. Представьте свое конечное состояние как оператор return (а атрибут id — как возвращаемое значение — вы также можете установить выходные атрибуты, но здесь это не важно).

Когда ваш подпоток завершается, управление возвращается обратно в вызывающий поток. Вызывающий поток должен определить переход, который определяет, как обрабатывать это событие. Идентификатор события, который вы увидите, является идентификатором конечного состояния в вашем подпотоке.

Итак, в вашем подпотоке, если у вас есть следующее конечное состояние:

 <end-state id="back"/>
  

Затем вы можете обработать этот переход в потоке, который вызвал подпоток:

 <subflow-state id="do-some-sub" flow="some-sub">
    < ... input variables, expressions, etc ... />
    <transition on="back" to="some-state"/>
</subflow-state>
  

Обратите внимание, что некоторое состояние здесь также может быть конечным состоянием. Ваша ситуация звучит так, как будто у вас есть основной поток, который вызывает подпоток, который, в свою очередь, вызывает другой подпоток. Итак, вы хотели бы, чтобы некоторое состояние было конечным состоянием, которое затем обрабатывалось бы его вызывающим потоком (в вашем случае «основным» потоком).

Ответ №2:

Вы можете достичь этого, добавив атрибут ‘parent’ при определении вашего подпотока следующим образом

 <flow parent="login" xmlns="http://www.springframework.org/schema/webflow"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/webflow  http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

<view-state id="forgotPassword">
        <transition on="backtoLogin" to="login">

        </transition>
  

здесь я хочу, чтобы мой подпоток возвращался на страницу входа при нажатии кнопки «Назад».

Следует заметить, что в вашем родительском flow.xml вам нужно указать абсолютный путь к представлению

мой родительский ie login-flow.xml приведено ниже

 <flow xmlns="http://www.springframework.org/schema/webflow"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/webflow     http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">


<view-state id="login" view="../login/defaultLogin.xhtml">