Как перенаправить с @Controller на поток

Мне нужно перенаправить поток из @Controller, но я не знаю, как это сделать. Мне нужно либо продолжить работу с MVC при определенном условии, либо перейти к моему потоку при другом условии. Вот последняя строка моего метода /auth:

return new ModelAndView(isFlowProtected(getClientId(sessionDataPayloadJSON)) ?
    "redirect:/login-flow" :
    LoginConstants.LOGIN);

По сути, у меня есть два потока входа в систему: один через обычный Spring MVC, один через веб-поток. Вот как я настроил свой поток:

@Bean
public FlowDefinitionRegistry flowRegistry() {
    return getFlowDefinitionRegistryBuilder().addFlowLocation("/webflow/login-flow.xml","login-flow"
            .setFlowBuilderServices(this.flowBuilderServices())
            .build();
}

@Bean
public FlowExecutor flowExecutor() {
    return getFlowExecutorBuilder(this.flowRegistry())
            .build();
}

@Bean
public FlowBuilderServices flowBuilderServices() {
    return getFlowBuilderServicesBuilder()
            .setViewFactoryCreator(this.mvcViewFactoryCreator()) // Important!
            .setValidator(this.localValidatorFactoryBean).build();
}

@Bean
public FlowHandlerMapping flowHandlerMapping() {
    FlowHandlerMapping handlerMapping = new FlowHandlerMapping();
    handlerMapping.setOrder(-1);
    handlerMapping.setFlowRegistry(this.flowRegistry());
    return handlerMapping;
}

@Bean
public FlowHandlerAdapter flowHandlerAdapter() {
    FlowHandlerAdapter handlerAdapter = new FlowHandlerAdapter();
    handlerAdapter.setFlowExecutor(this.flowExecutor());
    handlerAdapter.setSaveOutputToFlashScopeOnRedirect(true);
    return handlerAdapter;
}

@Bean
public ViewFactoryCreator mvcViewFactoryCreator() {
    MvcViewFactoryCreator factoryCreator = new MvcViewFactoryCreator();
    factoryCreator.setUseSpringBeanBinding(true);
    return factoryCreator;
}

Предполагая, что мой путь к моему потоку правильный, что я здесь делаю неправильно? Как при необходимости перенаправить на login-flow с моей конечной точки /auth? В настоящее время я получаю следующую ошибку:

java.io.FileNotFoundException: Could not open ServletContext resource [/webflow/login-flow.xml]

Так может мой путь неверный? Поток находится внутри resources/webflow, поэтому я думаю, что это правильно, а может и нет?


person Bill L    schedule 05.12.2018    source источник


Ответы (1)


У вас есть файл /webflow/login-flow.xml в корневом каталоге WAR? Я думаю, что эта ошибка указывает на то, что он не может найти этот файл. Я считаю, что ваше перенаправление работает правильно, и ваша конфигурация WebFlow ожидает найти файл конфигурации потока в указанном вами месте, но не находит его там.

Я не использовал Конфигурация WebFlow на основе Java раньше, поэтому я мог неправильно понять это, но лучше всего я прочитал это, я думаю, что вам все еще могут понадобиться файлы Flow xml, даже когда вы выполняете остальную часть конфигурации на Java.

См. Настройка Spring Web Flow с конфигурацией Java

person dbreaux    schedule 08.12.2018
comment
У меня есть этот login-flow.xml внутри каталога webflow, поэтому я тоже так запутался. Это дает мне путь, который я ожидаю увидеть, но по какой-то причине, похоже, не могу его найти. - person Bill L; 10.12.2018
comment
webflow каталог где? Вы ранее сказали resources/webflow. Какой полный путь к файлу, начиная с корня войны? - person dbreaux; 18.12.2018