【问题标题】:passing from controller to view in Grails从控制器传递到 Grails 中的视图
【发布时间】:2012-09-12 11:34:45
【问题描述】:

我正在尝试将一个集合从我的控制器传递给这样的视图:

   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'

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

在我正在使用的视图中:

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

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

[profileMessages: messages, childInstance: null]

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

中工作
currentUserTimeline(null)

因为

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

有效。

【问题讨论】:

    标签: grails


    【解决方案1】:

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

    如果你使用它也有帮助:

    return [ profileMessage: message ]
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多