Как перенаправить из @Controller в поток - PullRequest
0 голосов
/ 05 декабря 2018

Мне нужно перенаправить поток из @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, так что я думаю, что это правильно, а может и нет?

1 Ответ

0 голосов
/ 08 декабря 2018

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

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

См. Настройка Spring Web Flow с настройкой Java

...