Jakarta ee Grails中webflow的问题

Jakarta ee Grails中webflow的问题,jakarta-ee,grails,spring-webflow,Jakarta Ee,Grails,Spring Webflow,我在测试我的应用程序webflows时遇到了一个相当奇怪的问题 我有两个独立的webflow,用户登录后可以访问,这取决于用户是男性还是女性,它们开始一个进程,通过webflow发送它们。一个是男性,另一个是女性 因此,为了测试我的应用程序,我以男性用户身份登录并输入流量,这一切都很好。。然后,通过以女性身份注销和登录(或以其他浏览器中的女性用户身份登录),我尝试完成女性用户的过程,但我遇到了一个异常: Error 500: java.util.Collections$UnmodifiableM

我在测试我的应用程序webflows时遇到了一个相当奇怪的问题

我有两个独立的webflow,用户登录后可以访问,这取决于用户是男性还是女性,它们开始一个进程,通过webflow发送它们。一个是男性,另一个是女性

因此,为了测试我的应用程序,我以男性用户身份登录并输入流量,这一切都很好。。然后,通过以女性身份注销和登录(或以其他浏览器中的女性用户身份登录),我尝试完成女性用户的过程,但我遇到了一个异常:

Error 500: java.util.Collections$UnmodifiableMap cannot be cast to groovy.lang.Closure
Servlet: grails
URI: /ACUREG/grails/applicant/ma.dispatch
Exception Message: java.util.Collections$UnmodifiableMap cannot be cast to groovy.lang.Closure
Caused by: java.util.Collections$UnmodifiableMap cannot be cast to groovy.lang.Closure
Class: ApplicantController
现在这很奇怪,因为反过来也是真的,如果我作为一个女性开始第一次经历,然后尝试尝试男性过程,同样的问题也会发生,但这次异常将指向男性webflow代码中的第一个事件

有人知道为什么会这样吗?我确实认为这可能与同一控制器中的两个Webflow有关,但在将它们分离到各自的控制器中之后,仍然看到相同的问题,这显然不是事实


谢谢,

为了在这里尽可能多地提供答案,我将问题缩小到在初始化块中调用的方法,在初始化块中调用一个服务方法,该方法使用域对象中匹配的属性名称的值更新命令对象的属性

只要命令对象的类名不同,那么就没有问题,但在我的例子中,我的每个WebFlow的第一页使用相同的命令对象类,并且由于未知的原因,这导致了异常。通过复制这个特定的命令对象并重命名其中一个对象,使其特定于其中一个WebFlow,问题就消失了

我希望我能看到一个更有用的异常,并指出问题发生的地方,这样我就可以节省一天的时间来追踪它


因此,简而言之,如果您使用多个Webflow和命令对象,请小心,因为它们似乎是通过名称“缓存”的

问题在于多个webflow中具有相同名称的webflow事件。当我重新命名这些事件时,它们都不同了,没有更多的问题。

Source会有所帮助。您是否可以使用[]而不是{}?问题是,当我在两次尝试之间重新启动程序时,两个流都会按预期工作。例如,重新启动,尝试流A。。全部正常,重新启动,尝试流B,全部正常。。但是如果我尝试流A,注销并尝试流B,然后崩溃,为webflow添加一些调试,我们可以看到它崩溃的点:registry.FlowDefinitionRegistryImpl获取id为“applicator/fa”builder.DefaultFlowHolder的FlowDefinition首次组装流错误。GrailExceptionResolver java.util.Collections$UnmodifiableMap无法强制转换为groovy.lang.Closure取得了一些进展,问题似乎与初始化{}块有关。每个流都有一个初始化块,我在其中读取数据并填充整个流中使用的命令对象。如果我完全注释掉初始化块,那么我可以调用并显示两个流中的每一个。如果它在那里,我只能调用一个流。这对你来说可能太晚了,但我希望这能帮助其他人。。。基本上,如果您正在考虑在grails中使用webflow,请不要这样做。它非常具有侵入性(影响您编写GSP的方式,影响处理DB事务的方式,等等),但没有什么用处。它通常不是很难推出自己的。。。grails插件提供的Groovy DSL很不错,但它给我们的团队和我与之交谈过的其他人带来了无尽的问题。。。