0

我试图从我的控制器传递一个集合来查看,如下所示:

   def index() {
    childInstance = Child.get(params.id)

    if(childInstance){

       System.out.println("CHILD" + childInstance.firstname)

        def messages = currentUserTimeline(childInstance)
            [profileMessages: messages, childInstance: childInstance]
    }
    else{
   def messages = currentUserTimeline(null)
        [profileMessages: messages]
        System.out.println("ALL " + messages)
    }
}

if 有效,但 else 说明它将 profileMessages 作为空对象发送。如果我添加

render template: 'profileMessages', collection: messages, var: 'profileMessage'

其他这可行,但我想将所有内容传递给视图,而不是在控制器中呈现它。

在我正在使用的视图中:

<g:render template="profileMessages" collection="${profileMessages}" var="profileMessage"/>

任何想法为什么它在发送到视图时在 if 而不是在 else 中起作用?仅供参考,我已添加

[profileMessages: messages, childInstance: null]

到没有运气和 null 的 else 是允许的,并且确实在

currentUserTimeline(null)

因为

render template: 'profileMessages', collection: messages, var: 'profileMessage'

作品。

4

1 回答 1

2

带有模型的地图必须是块中的最后一个命令,因此将 System.out.println() 移动到地图上方。

如果您使用,它也有帮助:

return [ profileMessage: message ]

顺便说一句...使用 log4j 而不是 System.out.println ;-)

于 2012-09-12T11:57:15.103 回答