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




Это зависит от того, как вы собираетесь это делать. Если вы делаете это в одном потоке, у вас будет что-то вроде этого:
<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 также является конечным состоянием в потоке сообщений.
Затем информационный поток имеет переход от = "returnToInformation" к = "displayInformationPage", который затем повторно отображает информационную страницу.
Я сделал это, определив некоторый глобальный поток, представляющий вкладки. Затем я определил объект, представляющий вкладки в потоках, и указал, активна ли текущая вкладка. Когда пользователь перемещался по вкладкам, я соответствующим образом обновлял объект вкладки.
Когда пользователь нажимал на одну из вкладок, он использовал глобальные потоки, чтобы позволить им перемещаться между вкладками (для моей реализации мне было проще вызывать действия, а не состояния просмотра, потому что вы можете обнаружить, что представления могут меняться в зависимости от взаимодействие с пользователем, поэтому вам может потребоваться их пересчитать).
Что касается самой панели вкладок, я поместил ее в один JSP, который затем поместил вверху каждой формы, чтобы упростить обновление.
Это не самое лучшее решение, но оно работает.
Удачи.
Итак ... в чем вопрос? Есть ли у вас конкретная проблема?