Grails:404和延迟初始化

Grails:404和延迟初始化,grails,Grails,如果您访问一个不存在的页面,一个404被“抛出”,Grails试图呈现我的自定义404错误页面,我会从错误布局中执行的一些标记库中得到延迟初始化错误 taglib实际上尝试访问另一个域对象中的域对象,该域对象是一个具有多个关系的域。它能够获取初始对象,但在访问关系时,它会抛出这个延迟初始化错误 但是,如果正确访问任何其他页面,则不会发生这种情况。即使我试图直接访问自定义错误页面。仅当抛出404错误时 在这段时间内,hibernate会话是否存在导致延迟初始化错误的不同之处 在Grails中,访问

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

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

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

在这段时间内,hibernate会话是否存在导致延迟初始化错误的不同之处


在Grails中,访问在标记库中延迟初始化的内容可能不是一个好主意吗?

我以前见过这种情况,我通常的解决方案是将查询移动到控制器。我相信这是由于控制器和GSP会话不是一个且相同的事实——因此,最好在控制器中执行大多数数据库读取

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

至于绕过这个问题的黑客


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

我现在也有同样的问题。但它的标签是sec:ifNotLogIn-in-Spring安全插件。虽然没有抛出异常,但它并没有像预期的那样工作。我已经到处寻找,找不到解决这个问题的方法。我发现了一些Grails bug,这些bug仍然没有解决,听起来好像它们是相关的,但我不完全确定。taglib是如何读取域对象的?是否使用现有ID通过GORM查询?或者您是从会话中读取它的吗?当使用
和session{}
调用包装数据库访问时,它会起作用。