2012-10-25 53 views
0

我正在使用Grails的Dojo插件來填充dojox.grid.DataGrid對象。現在,與此網格關聯的控制器操作呈現定義網格內容的JSON。只要我預先定義了GSP中的列,那就行得通了。但是,我的應用程序需要能夠根據某些數據庫查詢結果動態設置列數(及其關聯名稱)。此網格的JSON格式不包含列名,因此我無法使用g:我的GSP中的每個標記遍歷名稱。GSP訪問控制器結果

我想要做這樣的事情,但我不能這樣做:

<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> 

我給道場插件後臺的具體例子,但我想將其擴展到有關Grails的一個更一般的問題。如果我通過呈現JSON的控制器操作構造GSP元素,如何訪問控制器中的其他內容以構建嵌套元素?這甚至有可能嗎?我對web開發仍然陌生,所以我確信我誤解了這些組件之間的一些聯繫。

回答

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。

+0

感謝您對Gregg的反饋。我仍然試圖用這些Web框架來控制流量。正如你可以告訴我仍然在學習語法:)我最終回到了我最初使用DataTables的想法,並能夠實現這一點。最初,當我添加了Grails導航插件時,我搞砸了控制流,應用程序不再觸發我的getJSON函數。 –