Spring webflow: перемещение по состояниям просмотра - PullRequest
3 голосов
/ 06 октября 2008

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

Например:

  • Вид 1 = логин
  • Просмотр 2 = Моя информация
  • Просмотр 3 = Мои сообщения
  • Просмотр 4 = Закрытие сеанса

В этом примере я хотел бы вернуться к представлению 2 со страницы представления 4.

Ответы [ 2 ]

4 голосов
/ 06 октября 2008

Зависит от того, как вы собираетесь это делать. Если вы делаете это в одном потоке, у вас будет что-то вроде этого:

<view-state id="loginView" view="login.jsp">
    <action-state bean="someBean" method="login" />
    <transition on="success" to="informationView" />
</view-state> 

<view-state id="informationView" view="information.jsp">
    <render-actions>
        <action-state bean="someBean" method="retrieveInformation" />
    </render-actions>
    <transition on="forward" to="messageView" />
    <transition on="back" to="loginView" />
</view-state>

<view-state id="messageView" view="message.jsp">
    <render-actions>
        <action-state bean="someBean" method="retrieveMessage" />
    </render-actions>
    <transition on="forward" to="closeView" />
    <transition on="back" to="informationView" />
</view-state>

<view-state id="closeView" view="logout.jsp">
    <transition on="jumpBack" to="informationView" />
</view-state>

Переход "jumpBack" на "closeView" вернет вас назад к состоянию просмотра №2, которое является вашим информационным представлением.

С подпотоками это сложно. Вам нужно было бы связать его: вызвать подпоток, и, если событие сигнализирует о том, что вам нужно завершить свой поток определенным состоянием, немедленно сделайте это.

Например, скажем, что ваша цепочка потоков - это логин-> информация-> сообщение-> закрыть.

При закрытии потока конечным состоянием будет "returnToInformation".

Поток сообщений имеет переход от = "returnToInformation" к = "returnToInformation".

returnToInformation также является конечным состоянием в потоке сообщений.

Затем информационный поток имеет переход on = "returnToInformation" в = "displayInformationPage", который затем повторно отображает информационную страницу.

0 голосов
/ 24 августа 2009

Я сделал это, определив некоторый глобальный поток, который представлял вкладки. Затем я определил объект, который представлял вкладки потоков и указал, была ли активна текущая вкладка. Когда пользователь перемещался по вкладкам, я соответствующим образом обновлял объект вкладки.

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

Для самой панели вкладок я поместил ее в один JSP, который затем поместил вверху каждой формы, что упростило его обновление.

Это не самое лучшее решение, но оно работает.

Удачи.

...