我正在尝试运行流程(Grails 2.3.11,Spring Web Flow 2.0.8.1,JDK 1.7.0_21,OS X 10.9.4)。
我第一次启动应用程序(通过在命令行输入“grails run-app”),我可以进入流程的第一页,流程似乎正常工作。
但是,下次我尝试执行流程时,我会收到以下错误(来自控制台)。即使删除我的cookie并重新启动应用程序,也会发生这种情况。如果我离开它几天并回到它,它似乎再次起作用(仅限第一次)。
我在六年前发现了一个thread,但我并没有像原来的海报一样调用flow.clear()。我的流程代码如下。
有没有人对此有任何见解?
错误:
[ERROR] 27 Jul 2014 21:54:14,086 org.springframework.webflow.engine.impl.FlowExecutionImpl FlowExecutionListener threw exception
java.lang.NullPointerException
at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:191)
at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
[ERROR] 27 Jul 2014 21:54:14,096 org.codehaus.groovy.grails.web.errors.GrailsExceptionResolver IllegalArgumentException occurred when processing request: [GET] /inscriba/author/createAuthor - parameters:
execution: e1s2
Session must not be null. Stacktrace follows:
org.springframework.webflow.execution.FlowExecutionException: Exception thrown in state 'headshot' of flow 'author/createAuthor'
at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:191)
at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.IllegalArgumentException: Session must not be null
... 5 more
代码:
def createAuthorFlow = {
log.debug("createAuthorFlow: I am here: ")
create {
log.debug("create: I am here")
on("next") {
log.debug("create.next: I am here")
flow.author = new Author(params)
!flow.author.validate() ? error() : success()
flow.author.save()
}.to "headshot"
}
headshot {
on("next") {
log.debug("headshot.next: I am here")
}.to "summary"
}
summary()
}
答案 0 :(得分:3)
我认为问题在于您必须使用Serializable对象才能将它们放入流范围。我的猜测是Author对象没有实现Serializable。
Grails web-flow文档提到了这一点,但只是说了一个"异常"将被抛出。我花了很长时间才弄明白发生了什么 - 希望这会有所帮助。