Grails:404和延迟初始化

时间:2011-01-18 20:36:46

标签: grails

如果你访问一个不存在的页面,并且404被“抛出”并且Grails去尝试渲染我的自定义404错误页面,我会从错误布局中执行的一些taglib中获得延迟初始化错误

实际上,taglib尝试访问另一个域对象内的域对象,该域对象是有多个关系。它能够获取初始对象,但是当访问该关系时,它会抛出这个延迟的初始化错误。

但是,如果正确访问任何其他页面,则不会发生这种情况。即使我尝试直接访问我的自定义错误页面。仅在抛出404错误时。

在此期间,hibernate会话有什么不同导致延迟初始化错误吗?

是否有可能在Grails中访问在taglib中延迟初始化的内容不是一个好主意?

1 个答案:

答案 0 :(得分:2)

我以前见过这个,我通常的解决办法是将查询移到控制器上。我认为这是因为控制器和GSP会话不是同一个 - 因此,在控制器中进行大多数数据库读取是个好主意。

在这种情况下,没有控制器。

至于解决这个问题的黑客......

我想知道你的GSP和/或taglib中是否有start a session/end a session强制执行此行为。另一个想法是在访问原始(父)对象的同时强制读取关系 - 这将初始化惰性关系。