Grails / Spring Web Flow插件:Session不能为null错误

时间:2014-07-28 03:06:07

标签: spring grails

我正在尝试运行流程(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()
}

1 个答案:

答案 0 :(得分:3)

我认为问题在于您必须使用Serializable对象才能将它们放入流范围。我的猜测是Author对象没有实现Serializable。

Grails web-flow文档提到了这一点,但只是说了一个"异常"将被抛出。我花了很长时间才弄明白发生了什么 - 希望这会有所帮助。