0

我正在使用 Grails 的 Dojo 插件来填充 dojox.grid.DataGrid 对象。现在,与此网格关联的控制器操作呈现定义网格内容的 JSON。只要我预定义了 GSP 中的列,它就可以正常工作。但是,我的应用程序需要能够根据某些数据库查询结果动态设置列数(及其关联名称)。这个网格的 JSON 格式不包括列名,所以我不能在我的 GSP 中使用 ag: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 开发还是新手,所以我确信我误解了这些组件之间的一些粘合剂。

4

1 回答 1

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。

于 2012-10-25T19:51:11.943 回答