在测试我的应用程序网络流时,我遇到了一个相当奇怪的问题。
我有两个单独的Webflow,一旦用户登录(取决于用户是男性还是女性),就可以访问这些Webflow,他们开始一个将其发送到Webflow上的过程。一个用于男性,另一个用于女性。
因此,要测试我的应用程序,我以男性用户身份登录并输入流程,这一切都很好..然后通过注销并以女性用户身份登录(或以女性用户身份在其他浏览器中登录),然后尝试经历女性过程,但邦我得到一个异常(exception):
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
现在这很奇怪,反之亦然,如果我首先以女性身份开始尝试,然后尝试尝试Male过程,则会发生相同的问题,但是这次异常将指向male webflow代码中的第一个事件...
有谁知道为什么会这样?我确实认为这可能与同一个 Controller 中的两个Webflow有关,但是在将它们分离到自己的 Controller 中之后,仍然看到相同的问题,事实显然并非如此。
谢谢,
最佳答案
为了尽可能在此处提供答案,我将问题缩小到在初始化块中调用的方法,在此我调用服务方法,该服务方法使用域中匹配的属性名称中的值更新命令对象的属性目的。
只要命令对象的类名不同,就没有问题,但是在我的情况下,我的每个Webflow的第一页都使用相同的命令对象类,由于某种原因,这是导致异常的原因。通过复制此特定命令对象并重命名其中一个对象,使其特定于其中一个Webflow,问题就消失了。
我希望我可以看到一个更有用的异常(exception)情况,并指出问题发生的位置,并且我可能节省了追踪该问题的时间。
简而言之,如果您将多个Webflow与命令对象一起使用,请小心,因为它们似乎以某种方式被``缓存''了...
关于jakarta-ee - Grails中的webflow问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4499798/