Отправка из Spring MVC в Spring Webflow

Мое приложение примерно на 80% состоит из Spring MVC, но у меня достаточно кода, использующего Webflow. В настоящее время я использую Spring MVC SimpleUrlHandlerMapping для отправки в веб-поток, что, как я знаю, не так, как я «должен» это делать.

Мои определения потока определены следующим образом:

  • /WEB-INF/потоки/процесс1/резервирование/резервирование-поток.xml
  • /WEB-INF/flows/process1/modify/modify-flow.xml
  • /WEB-INF/потоки/процесс2/резервирование/резервирование-поток.xml
  • /WEB-INF/flows/process2/modify/modify-flow.xml

Я хочу иметь доступ к ним через следующие URL-адреса:

Мой bean-компонент потокового реестра выглядит следующим образом:

<webflow:flow-registry id="flowRegistry" base-path="WEB-INF/flows" flow-builder-services="flowBuilderServices" >
    <webflow:flow-location-pattern value="/**/*/*-flow.xml"/>
</webflow:flow-registry>

Мой javascript для отправки в веб-поток выглядит так (фрагмент javascript, это очень сложная страница):

var form = $('<form    action="${pageContext.request.contextPath}/process1/reservation/reservation.html"    method="POST">');

    form.append('<input name="param1" value="' + record.param1 + '" />');
    form.append('<input name="param2" value="' + record.param2 + '" />');
    form.append('</form>');
    submitForm(form);

Теперь собственно вопрос: как настроить для него сопоставление обработчика URL, будь то SimpleUrlHandlerMapping или что-то еще?

Спасибо!


person Jason    schedule 14.07.2016    source источник
comment
Значит, должна быть причина, по которой вы использовали SimpleUrlHandlerMapping вместо FlowHandlerMapping так, как вы должны это делать? Если я правильно понимаю, о чем вы просите, разве FlowHandlerMapping не должен дать вам то, что вы хотите?   -  person dbreaux    schedule 27.07.2016
comment
Как упомянул @dbreaux, есть ли какие-либо особые причины для отказа от использования FlowHandlerMapping. Кроме того, изучали ли вы использование подпотоков и добавление дополнительных переходов в файл конфигурации сопоставления потоков.   -  person Shivam Aggarwal    schedule 27.07.2016
comment
Причина, по которой я не использовал FlowHandlerMapping, заключается в том, что он никогда не работал у меня. В соответствии с моим базовым путем у меня будет это: /process1/reservation/reservation.xml Я ожидаю, что это будет отображаться на: example.com/context/process1/reservation/reservation.html Но не повезло.   -  person Jason    schedule 27.07.2016
comment
еще одна вещь, в веб-потоке файлы xml содержат определения потока для различных переходов, так зачем иметь конфигурацию потока, когда вы напрямую хотите, чтобы он перенаправлялся на страницу?   -  person Shivam Aggarwal    schedule 27.07.2016
comment
Каким шаблонам соответствует ваш диспетчерский сервлет в файле web.xml? Как только я добавил *.html, мои потоки тоже начали реагировать на это. (В DefaultFlowUrlHandler javadoc описывается, что он будет игнорировать расширения при определении идентификатора потока.)   -  person dbreaux    schedule 27.07.2016


Ответы (1)


Обычно, если вы хотите отправить запрос в веб-поток через Spring-MVC, нам нужно настроить FlowHandlerAdapter следующим образом:

<!-- Enables FlowHandler URL mapping -->
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
    <property name="flowExecutor" ref="flowExecutor" />
</bean>

А затем определите flowMapping:

<!-- Maps request paths to flows in the flowRegistry;
    e.g. a path of /movie/showtime looks for a flow with id "movie/showtime" -->
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
    <property name="flowRegistry" ref="flowRegistry"/>
    <property name="order" value="0"/>
</bean>

Для подробной реализации вы также можете обратиться к документации Spring.

person Sudhish K    schedule 27.07.2016