在TagLib中处理GORM调用的正确方法

时间:2014-06-11 16:29:36

标签: grails gorm taglib

我今天开始在Grails 2.2.4项目上使用Webflow,我立即遇到了以下异常:

could not initialize proxy - no Session

我在this SO question上进行了一些研究,然后我将this JIRA issue标记为无法修复,因为在TagLib中进行GORM调用被认为是错误的想法。

由于这种东西似乎在常规操作中运行良好,我之前没遇到过这个问题。我的问题是,如何构建以下代码,以便我遵循正确的做法。

我有一个名为_nav.gsp的模板,用于处理我的网站导航栏。根据用户的角色,显示和隐藏了许多菜单选项。我在TagLib中有以下内容:

def ifProjectGranted = { attr, body ->
    def authenticatedUser = docRegService.authenticatedUser

    if (authenticatedUser) {
      def roles = UserRole.findAllByUser(authenticatedUser).collect { it.role.authority }

      // here I check roles and manage my rendering to the output
    }
}

我知道我可以将findAllByUser封装在withTransaction块中来解决问题。但根据JIRA,我不应该在这里进行这种查找。那么我会在哪里做呢?

0 个答案:

没有答案