the next state cannot be getting called
很久之前遇到的问题了。就是说,在起了服务器之后,进入第一个state然后点击下一步时,会发生仍停留在当前页面的情况。但是,你可以确定的是,eventId_和flowExecutionKey这个部分是没有问题的。前者确定了单击发生的事件,后者确定了当前是哪个flowstate。
<input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}">
<input type="submit" class="submit" name="_eventId_next" value="next">
这个问题的解决真的是一波三折。由于前两个问题的经验,第一个想到的情况是spring mvc和spring webflow整合上的问题。我直接去查了spring webflow的文档,这里附上链接。
spring webflow官方指导手册链接
然而仅仅从文档上看,确实没有查到任何有问题的地方。之后去stackoverflow上查,有一个跟我遇到了一模一样的问题。stackoverflow问题链接
不过可惜的是,虽然有回答,但是那人的问题确实没有解决。但是其中一个回答是说,在mvc使用form的时候尽量使用spring mvc的form,也就是。虽然那人说试了还是不行,不过我试了,却可以了!!
当时以为问题解决了。
直到进入第二个state。
我发现进入第二个state之后,点击下一步居然不能进入第三个state。
这我真没招了。因为之前已经查过文档,查过论坛了,使用spring mvc的form都是查了好久才找到的“解决方法”。这次的问题出现在前台的checkboxes选择上,选择之后点击下一步还是停留在当前页面。第一个想到的是是如法炮制,用spring mvc的checkboxes,可是结果还是不行。
这个问题悬了一下午,晚上的时候当时是做另外一个东西的测试。当时使用的checkboxes是对书本的一个选择的演示,我晚上为了测试另外的东西,我给Book类添加了带String参数的构造器。结果我竟然奇迹般的发现下午的问题解决了!!!
综上,我是这么推论的。无论是使用还是提供带String的构造器,问题都是出现在数据传输中”反序列化“的问题上。也就是说spring mvc的form能工作依赖于绑定参数能成功,特殊的构造器能工作依赖于能够将String成功转换为Book对象。
所以说出现不能进入下一个state的问题,在确定flowExecutionKey和eventId_正确之后,不妨考虑一下反序列化的问题。