gpt4 book ai didi

Spring Webflow 2.4.2 缺少启动状态

转载 作者:行者123 更新时间:2023-12-04 05:39:28 24 4
gpt4 key购买 nike

我刚开始将 Webflow 添加到 Spring MVC 项目,但在我的 flow.xml 组件上遇到了这个编译错误:

Start state is missing. Add at least one state to the flow

我在一年前的 SO 上找到了一个相同的帖子:webflow.xsd - Start state is missing. Add at least one state to the flow .没有人回答这个问题,但我在 Spring Webflow 的 Jira 存储库中找到了它:webflow.xsd - Start state is missing. Add at least one state to the flow .它被标记为无法复制。

这是我非常简单的 webflow.xml 的摘录。

    <?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/webflow
http://www.springframework.org/schema/webflow/spring-webflow-2.4.xsd">

<on-start>
<evaluate expression="recipeService.createRecipe(currentUser.name)" result="flowScope.recipe" />
</on-start>

<view-state id="basics" view="recipe/basics" model="recipe">
<transition on="proceed" to="ingredients"></transition>
<transition on="cancel" to="cancel"></transition>
</view-state>

... more states ...

<end-state id="end" view="recipe/end"/>
<end-state id="cancel" view="recipe/end"/>

</flow>

文档表明开始状态是可选的——第一个 View 状态将被假定为开始。如果我将 spring-webflow-2.4.xsd 更改为 2.0,错误就会消失,但如果我尝试在任何 View 状态条目上使用验证提示,则会出现不同的错误。以下示例中的“Basic1”和“Basic2”是配方模型上的验证组。

<view-state id="basics" view="recipe/basics" model="recipe" validation-hints="'basic1,basic2'">

我在用

  • STS 3.6.4
  • Spring 4.1.6.RELEASE
  • Spring WebFlow 2.4.2.RELEASE
  • Spring Security 4.0.2.RELEASE
  • Java 1.7
  • 休眠 4.3.10.FINAL

我对所有内容都使用基于 java 的配置,但我认为这不是问题所在,除非我的 Webflow 2.4.2 要求的版本不匹配?如果有帮助,我可以发布我的 WebMvcConfig 和 WebFlowConfig 或 pom.xml 或任何其他信息。

如有任何帮助,我们将不胜感激。

编辑 #1:java 配置的摘录

    From WebFlowConfig.java: 
@Bean
public FlowDefinitionRegistry flowRegistry() {
return getFlowDefinitionRegistryBuilder(flowBuilderServices())
.setBasePath("/WEB-INF/views")
.addFlowLocationPattern("/**/*-flow.xml")
.build();
}

From WebMvcConfig.java
@Override
public void addViewControllers(final ViewControllerRegistry registry) {
super.addViewControllers(registry);
registry.addViewController("/recipe/basics.htm");
registry.addViewController("/recipe/ingredients.htm");
registry.addViewController("/recipe/instructions.htm");
registry.addViewController("/recipe/optional.htm");
registry.addViewController("/recipe/end.htm");
}

使用 2.0 所有页面都以正确的顺序执行。

编辑#2

我忘了说,即使出现 2.4 xsd 编译错误,webflow 也会执行,与一年前的帖子一样。我还发现了这个关于 STS 的问题:webflow config gives incorrect "Start state definition is missing." error .指示的修复版本是 3.3.0.M1,所以我假设 (?) 该修复仍包含在 STS 3.6.4 中。

最佳答案

我花了几个小时尝试我能想到的一切,包括用 booking-mvc 示例项目中的 pom.xml 的内容替换 pom.xml 中的几乎所有内容,尽管它也没有显示此错误设置为版本 2.4.2。由于 webflow 似乎绑定(bind)到 Thymeleaf 和 Tiles(我没有使用),我认为这些项目中可能存在依赖关系,可以消除错误。没有。

所以我查看了 booking-mvc 项目的属性,并将它们与我的进行了比较。我能看到的唯一相关差异是在 Spring |网络流量支持。我的项目列出了我的 recipe-flow.xml,但 booking-mvc 没有显示它的 -flow.xml 文件。一旦我删除了我的 flow.xml 文件,错误就消失了。

enter image description here

我不知道文件是如何在这个配置位置结束的,我找不到任何关于这个属性的文档,但显然这是一个禁忌,至少在我的项目中是这样。花了一些时间让我的 pom.xml 恢复原状,但应用程序现在又可以工作了。

关于Spring Webflow 2.4.2 缺少启动状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33470021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com