如果您访问一个不存在的页面,并且“抛出”了 404 并且 Grails 尝试呈现我的自定义 404 错误页面,我会从我在错误布局中执行的一些标签库中收到延迟初始化错误。

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

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

这段时间的休眠 session 是否有什么不同导致延迟初始化错误?

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

最佳答案

我以前见过这个,我通常的解决方案是将查询移动到 Controller 。我相信这是由于 Controller 和 GSP session 不是一个和相同的事实 - 因此,在 Controller 内执行大多数数据库读取是一个好主意。

在这种情况下,没有 Controller 。

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

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

关于Grails:404 和延迟初始化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4728758/

10-15 11:25