Grails Filter viewModel数据为空?

时间:2013-09-03 14:19:59

标签: grails view filter nullpointerexception

所以我正在创建一个应用程序,我想将数据传递给布局以构建内容。因此,当我将数据传递给布局时,我创建了一个过滤器以便执行此操作,此过滤器基本上只查看当前登录的用户,然后进入该帐户并最终查看其帐户中的所有选项,如图所示下面:

class OptionsFilters {

    def springSecurityService

    def filters = {
        all(controller:'*', action:'*') {
            before = {

            }
            after = { viewModel ->

                if(springSecurityService.currentUser != null && springSecurityService.currentUser.acc.options.size() > 0)
                {

                    viewModel.options = springSecurityService.currentUser.acc.options
                }

            }
            afterView = { Exception e ->

            }
        }
    }
}

现在已经完成了我有以下代码,旨在隐藏该数据,除非用户可以选择查看它:

<g:each var="option" in="${ options }">

    <g:if test="${option.name == 'email'}">

        //The data to show if they have the option

    </g:if>

</g:each>

现在有趣的是,如果用户帐户已经附加了选项(或至少1个),此代码可以正常工作,但是场景是我运行应用程序而我有一个帐户没有选项的用户,所以暂时隐藏布局中的数据。然后,当我进入他们的帐户并添加说“电子邮件”选项并点击保存时,我希望显示正确的显示视图,现在布局中的内容也应该可见。然而,这不是发生的事情,我得到这个错误:

Cannot set property 'options' on null object. Stacktrace follows:
Message: Cannot set property 'options' on null object
   Line | Method
->>  25 | doCall   in tool.OptionsFilters$_closure1_closure2_closure4
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|   195 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter
|    63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter
|   895 | runTask  in java.util.concurrent.ThreadPoolExecutor$Worker
|   918 | run . .  in     ''
^   662 | run      in java.lang.Thread

从我的测试中我发现,当我更新自己帐户的选项时,似乎只会发生此错误。我认为在更新附加到我的用户名的帐户选项和查看该数据以进行处理的过滤器之间存在某种时间问题。

我很感激您的帮助。

提前致谢

0 个答案:

没有答案