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

标签 grails spring-webflow

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

我有一个 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 {} 闭包内的“目标”对象被放入流作用域中,但我不知道如何将其标记为 transient 。

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

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

最佳答案

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

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

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

关于Grails Webflow - 将事物保持在流程范围之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1691853/

相关文章:

java - c :foreach using List: Must evaluate to a Collection, 映射、数组或 null

java - webflow2 找不到我的 java 代码( Controller )

java - 手动释放流范围内的对象以进行垃圾回收

grails - Grails-Websphere-未定义名为 'springSecurityFilterChain'的bean

grails - Grails外部配置

grails - 错误:以下插件由于缺少依赖项而无法加载:

grails - 没有登录项目URL应该无法在常规中使用

java - ResourceBundle 的变量查找参数?

rest - 如何在grails中将对象作为JSON传递给POST或PUT请求

java - 更新 spring webflow 中的对象未显示在 UI 上