【问题标题】:pass from controller to view in grails从控制器传递到 grails 中的视图
【发布时间】:2012-08-22 13:30:34
【问题描述】:

我试图从我的控制器传递到我在 grails 中的视图 在我的控制器中,我有这个:

    def index() {
    def user = User.get(springSecurityService.principal.id)
    def children = user.children
    }

在我的 gsp 中(查看我有这个)

 <g:each var="child" in="${children}">
    <p>Name: ${child.firstname}</p>
    <p>Author: ${child.lastname}</p>
 </g:each>

它没有从我的控制器中获取子对象,我也尝试过

<% def children = children %>

没有运气

有人可以指点我正确的方向

谢谢

【问题讨论】:

    标签: grails


    【解决方案1】:

    按照惯例,Grails 将呈现与执行的控制器操作相匹配的视图。按照惯例,它还将作为视图模型的操作的返回值传递。在您的情况下,要使其正常工作,您可以像 @Mr. 中那样显式渲染视图。猫的回答,或者你可以像这样返回模型

    def index() {
        def user = User.get(springSecurityservice.principal.id)
        [children: user.children]
    }
    

    Groovy 隐式返回最后评估的表达式。

    【讨论】:

      【解决方案2】:

      试试这个:

      def index() {
         def user = User.get(springSecurityService.principal.id)
         render(view:'index',model:[children:user.children]) 
      }
      

      【讨论】:

      • 显式渲染按惯例渲染的视图是多余的 - 请参阅@doelleri 的答案以获得更标准的方法(除了不必要的return 语句)
      • 有这么多不正确吗?我总是这样做是为了防止硬名称依赖。
      • 你的意思是添加一个硬名称依赖:)
      • @BurtBeckwith 我对退货进行了辩论,但为了清楚起见,最终将其留在了那里。你总是依赖隐式返回吗?
      • 只是将 2c 放在这里 - 我发现如果您希望输出为“原始”(未应用布局),您确实需要 'view' 参数,因为简单传递“layout: null”会导致奇怪的结果。
      猜你喜欢
      • 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
      相关资源
      最近更新 更多