从控制器传递到Grails中的视图

时间:2012-09-12 11:34:45

标签: grails

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

   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 if有效,但是其他人讲述了它将profileMessages作为空对象发送。 如果我添加

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

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

在我正在使用的视图中:

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

任何想法为何在发送到视图时在if中工作而不在其他工作?  仅供参考我已添加

[profileMessages: messages, childInstance: null]

到没有运气的其他地方,并允许null,并且在

中有效
currentUserTimeline(null)

因为

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

作品。

1 个答案:

答案 0 :(得分:2)

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

如果你使用它也会有所帮助:

return [ profileMessage: message ]

BTW ...使用log4j代替System.out.println; - )