Grails Webflow:错误无法初始化代理 - 尝试访问PageScope中的域集时没有会话

时间:2014-01-30 12:38:55

标签: grails spring-webflow

我们有一个类似于g:set的自定义标签,它将当前用户设置为PageScope <n:currentUser var=”foobar”>在我们有一个流程之前它很有效。

对于使用上面标记的流动视图状态,它将抛出Lazy初始化异常“无法初始化代理 - 无会话”,即使用户在同一请求中加载并在pagescope中设置。

webflow不尊重OpenSessionInView!这里出了什么问题。 什么可能是解决方案,然后急切地提取和明确传递模式。

(标签实际上是一个布局,适用于视图状态的视图)

更新

我刚注意到,即使在加载对象后立即访问该对象,它仍然会给出相同的错误。所以它不是导致问题的PageScope事件

标签内

User user = User.get(x)
println user.foo.bar gives the same error

看起来,对于流动作,会话根本不会保持打开状态,并且在操作完成后似乎就会关闭。

由于

1 个答案:

答案 0 :(得分:1)

I've seen this error before,与网络流无关,但在布局中使用了标记。在这种情况下,会话关闭后处理布局,您需要手动创建新会话。

def currentUser = { attrs ->
  User.withTransaction {
    User user = User.get(x)
  }
}

JIRA的状态无法修复,因为在TagLib中进行GORM查询不是一个好习惯。