Spring Webflow не позволяет пользователю вернуться к началу потока после завершения потока, и пользователь переходит в конечное состояние. Нажатие кнопки «Назад» браузера приведет его к странице с ошибкой, а не к началу потока. Сообщите мне, могу ли я предоставить дополнительную информацию.Spring Webflow не позволяет пользователю вернуться к началу потока после завершения потока
ответ
При повторном входе потока после того, как пользователь нажимает кнопку «Назад», вам нужно проверить состояние какого-либо типа или вызвать исключение, где либо можно поймать и обработать, чтобы перенаправить на нужную страницу.
Возможные решения:
1. Добавить в пользовательской сессии переменная, которая указывает на конкретный поток больше не может быть введен пользователем и проверить эту переменную в начале потока.
<decision-state id="checkBackButtonClick">
<if test="externalContext.sessionMap.preventBackButtonClick" then="redirectToHomePage" else="continueToEditState"/>
</decision-state>
....
<end-state id="end" view="externalRedirect:/pojos/#{somePojo.id}">
<on-entry>
<set name="externalContext.sessionMap.preventBackButtonClick" value="true" type="java.lang.Boolean"/>
</on-entry>
</end-state>
Хотя решение выше, как представляется, «взломать» Я думаю, что это хорошее решение, если вам нужно только это поведение для 1 или нескольких потоков, и это не требует много для реализации ... (без расширяющихся классов, переопределяющих методов и т. д.)
2. Еще одно возможное решение - поместить атрибут/требование 'require = true' для входного параметра для потока.
<input name="id" required="true"/>
Таким образом, если пользователь нажмет кнопку назад без необходимых паров в URL поток вызовет исключение
org.springframework.webflow.engine.FlowInputMappingException:
И в зависимости от того, как обрабатывать исключения в ваших webflows ... вы можете поймать это исключение и перенаправление на нужную страницу/поток. Предполагает, что у вас есть параметры ввода «input».
3. Внесите свой поток, расширив AbstractFlowHandler в java, который даст вам огромное количество возможностей настройки. Очевидно, что третий вариант включает в себя больше кодирования/работы. Используйте его в качестве последнего средства
http://www.springbyexample.org/examples/simple-spring-web-flow-webapp-code-example.html
история = опция «Invalidate», кажется, только на переходный тег под «вид государства». В моем случае я перехожу от -> ->. Как только я в конечном состоянии, я не хочу, чтобы обратный браузер нажал, чтобы вернуть меня к началу потока. –
user1187958
@ user1187958 Хмм, я не сделал этого некоторое время. Я думаю, что то, что вы хотите сделать, это вызвать исключение при каждом нажатии кнопки «назад», а затем обработать исключение, чтобы перенаправить на желаемую страницу ... или, возможно, выполнить проверку проверки каждый раз, когда начинается поток (и если параметры отсутствуют) и вызвать перенаправление там. Я собираюсь экспериментировать в этом направлении и посмотреть, что я придумал – Selwyn
@ user1187958 Я обновил ответ своим исследованием. Я не мог найти ничего встроенного, но в зависимости от вашего варианта использования решения, описанные выше, будут простыми в реализации. – Selwyn