我有一个非常烦人的问题,我无法解决。
这是我的webflow项目的主要结构:
- WEB-INF/flows/basic/basic-flow.xml
- WEB-INF/flows/error/error-flow.xml
错误流包含常见的异常处理,并且是抽象的。基本流将错误流作为父流。
当我试图编写JUnit测试时,我遇到了一个问题,它无法加载错误流。我已经测试了basic本身(只是删除了父属性),它运行得很好。关于我可能做错了什么,有什么建议吗?
以下是测试代码的重要部分:
@Override
protected FlowDefinitionResource getResource(FlowDefinitionResourceFactory resourceFactory) {
return resourceFactory.createFileResource("src/main/webapp/WEB-INF/flows/basic/basic-flow.xml");
}
@Override
protected FlowDefinitionResource[] getModelResources(FlowDefinitionResourceFactory resourceFactory) {
FlowDefinitionResource flowDefinitionResource = resourceFactory
.createFileResource("src/main/webapp/WEB-INF/flows/error/error-flow.xml");
return new FlowDefinitionResource[] { flowDefinitionResource };
}
public void testStartBasicFlow() {
MockExternalContext context = new MockExternalContext();
startFlow(context);
}
我得到的例外是:
Caused by: org.springframework.webflow.engine.model.registry.NoSuchFlowModelException: No flow model 'error' found
对于您的error
流,您可能应该明确地传递一个flowId
:
FlowDefinitionResource flowDefinitionResource = resourceFactory.createResource(
"src/main/webapp/WEB-INF/flows/error/error-flow.xml", null, "error");
当使用FlowDefinitionResource.createFileResource(..)
时,flowId
是FlowDefinitionResource.getFlowId(..)
的结果,在您的情况下,它可能不会计算为error
。