【问题标题】:GSP Access to Controller ResultsGSP 访问控制器结果
【发布时间】:2012-10-25 19:11:22
【问题描述】:

我正在使用 Grails 的 Dojo 插件来填充 dojox.grid.DataGrid 对象。现在,与此网格关联的控制器操作呈现定义网格内容的 JSON。只要我预定义了 GSP 中的列,它就可以正常工作。但是,我的应用程序需要能够根据某些数据库查询结果动态设置列数(及其关联名称)。此网格的 JSON 格式不包括列名,因此我无法在 GSP 中使用 g:each 标记来遍历名称。

我想做这样的事情,但我做不到:

<dojo:grid controller='foo' action='getGridData' ...>
   <g:each in=${columns}>
       <dojo:col width="15%" name="{it}" field="{it}">{row.{it}}<dojo:col/>
   </g:each>
</dojo:grid>

我给出了 Dojo 插件的具体示例作为背景,但我想将其扩展到关于 Grails 的更一般的问题。如果我通过呈现 JSON 的控制器操作构造 GSP 元素,我如何访问控制器中的其他内容以构造嵌套元素?这甚至可能吗?我还是 Web 开发的新手,所以我确定我误解了这些组件之间的一些粘合剂。

【问题讨论】:

    标签: grails dojo grails-plugin dojox.grid.datagrid


    【解决方案1】:

    我认为您的代码有问题的主要问题是您试图错误地引用列数据。

    <g:each in="${columns}">
       <dojo:col width="15%" name="${it}" field="${it}">{row.{it}}<dojo:col/>
    </g:each>
    

    注意in= 值周围的引号和用于引用it 变量的美元符号。

    关于最后一位

    {row.{it}}
    

    我不清楚在这种情况下row 是什么。所以我不确定如何解决这个问题,但也许这会让你朝着正确的方向前进。

    您通常不会在一个请求中呈现 GSP 并构造 JSON。这里会发生的是你渲染你的 GSP,它获取你所有的 taglib 代码并生成 HTML/JavaScript。然后,一旦浏览器呈现它,就会进行 AJAX 调用以获取 JSON。

    请记住,当 GSP 到达浏览器时,它只是 HTML。

    【讨论】:

    • 感谢格雷格的反馈。我仍在努力了解这些 Web 框架的控制流程。如您所知,我仍在学习语法 :) 我最终回到了使用 DataTables 的最初想法,并且能够让它发挥作用。最初,当我添加 Grails 导航插件时,我弄乱了控制流程,应用程序不再触发我的 getJSON 函数。
    猜你喜欢
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    相关资源
    最近更新 更多