Не то решение, которое я использовал в конечном итоге, но которое я приму, поскольку мое в основном является собственностью приложения моей компании. Я закончил тем, что расширил FlowExecutionListenerAdapter и обработал исключение напрямую, чтобы попытаться продвинуть шаг выполнения один раз (используя параметр запроса, чтобы предотвратить бесконечную рекурсию, если случай ++ завершился неудачно с тем же исключением), а затем просто отправил пользователя на страницу посадки / входа в систему.

му я использую Spring Web Flow для проекта и хочу использовать атрибуты history = "discard" и history = "invalidate" для элементов.

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

org.springframework.web.util.NestedServletException: обработка запроса не удалась; Вложенное исключение - org.springframework.webflow.execution.repository.FlowExecutionRestorationFailureException: возникла проблема с восстановлением выполнения потока с ключом 'e1s1'.

Так что он говорит, что я удалил это состояние из истории, чтобы оно не могло его найти. Я действительно не понимаю, почему нет какого-то встроенного механизма для обработки этого, во-первых, но кроме этого, я не смог найти способ изящно обработать это исключение, чтобы я мог просто перенаправить их на страницу ошибки или было бы лучше просто отправить их туда, откуда они пришли.

<view-state id="page1">
    <transition on="gotoNextPage" to="page2" history="invalidate" />
</view-state>
<view-state id="page2"/>

Как это поведение должно быть достигнуто, чтобы нажатие кнопки «Назад» на странице 2 не создавало исключение, а просто оставляло вас на странице 2?

Ответы на вопрос(1)

Ваш ответ на вопрос