Grails Webflow - 将事物保持在流程范围之外

2024-01-10

我错过了一些东西......

我有一个 Grails 网络流程,如下所示:-

def childFlow = {
        start {
            action {
                def targets = []
                Target.list().each {target ->
                    targets.add(new TargetCommand(name: target.name, id: target.id))
                }
                log.debug "targets are $targets"
                [children: targets]
            }
            on('success').to('selectChild')
        }
        ...

TargetCommand 是可序列化的。但我收到此错误:-

Caused by: java.io.NotSerializableException: com.nerderg.groupie.donate.Target

由于某种原因,Target.list().each {} 闭包内的“目标”对象被放入流作用域中,我不知道如何将其标记为瞬态。

我在服务中有一些代码,当我不希望它们也放置在流范围中时,它们也放置了对象。

如何阻止将闭包中的局部瞬态变量放入流作用域中?


完善上面的答案,而不是清除 persistenceContext,我们只是在完成实例时将其逐出,如下所示:

    Target.list().each {
        targets.add(new TargetCommand(name: it.name, id: it.id))
        flow.persistenceContext.evict(it)
    }

这仍然是无法将闭包变量标记为瞬态的解决方法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Grails Webflow - 将事物保持在流程范围之外 的相关文章

随机推荐