Мне нужно перенаправить в поток с @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, так что думаю, что это правильно, а может и нет?
У вас есть файл /webflow/login-flow.xml в корневом каталоге WAR? Я считать это то, что указывает эта ошибка, что он не может найти этот файл. Я считаю, что ваше перенаправление работает правильно, и ваша конфигурация WebFlow ожидает найти файл конфигурации потока в указанном вами месте, но не находит его там.
Я не использовал Конфигурация WebFlow на основе Java до, поэтому могу неправильно это понять, но лучше всего я это прочитал, я думаю, вам все равно могут понадобиться XML-файлы Flow, даже когда вы выполняете остальную настройку на Java.
См. Настройте Spring Web Flow с помощью конфигурации Java
webflow каталог где? Вы ранее сказали resources/webflow. Какой полный путь к файлу, начиная с корня войны?
У меня есть этот
login-flow.xmlв каталогеwebflow, поэтому я тоже так запутался. Это дает мне путь, который я ожидаю увидеть, но по какой-то причине не могу его найти.