2012-02-20 54 views
3

我很樂意獲得從普通SQL表格獲取「表格」結構的好方法。Play Framework:如何從普通SQL表格呈現表格結構

在我的特定情況下,我需要呈現由谷歌可視化API「數據表」對象使用JSON結構: http://code.google.com/apis/chart/interactive/docs/reference.html#DataTable 然而,具有HTML的例子幫助的。我的「源」是一個普通的「DailySales」SQL表:它的列是「Day」(日期),「Product」和「DailySaleTotal」(該產品的每日銷售)。請記住,我的「模型」反映了上面的3列表格。

表列應該是「產品」(假設我們有這麼少的數量)。每行代表一個特定的日期,行數據是當天的實際銷售額。

Date    Product1 Product2 Product3 
    01/01/2012  30   50   60 
    01/02/2012  35   3   15 

我試圖使用嵌套#{list}裏的標籤的模板,但遺憾的是我沒能找到一個自然的方式來提供一個模板,一個「單子」來表示「行數據」。

當然,我可以在Java中構建一個「助手對象」,它將構建每個日期的「銷售數據」項目列表 - 但這對我來說看起來很奇怪。

我會感謝任何能夠提供優雅解決方案的人。

最大

+0

「你的來源是一個普通的SQL表」:你的意思是一個純文本像您展示由\ T和分離\ n? – gre 2012-07-14 16:05:11

回答

2

當加載按日期和產品名稱模型定購。然後在你的控制器中建立一個包含日期作爲索引的地圖,以及與地圖的值具有相同日期的模型對象列表

然後在你的模板中,你有第一個列表迭代地圖鍵的行和第二個列表迭代列的列表值。

喜歡的東西

[ 
#{list modelMap.keys, as: 'date'} 
[${date},#{list modelMap.get(date), as: 'product'}${product.dailySaleTotal}#{ifnot product_isLast},#{/ifnot}#{/list}]#{ifnot date_isLast},#{/ifnot} 
#{/list} 
] 

然後你可以調整你的JSON渲染你想有確切結構。這裏是一個數組數組。

2

代替生成JSON自己,像勒布建議,您可以生成它:

private static Result queryToJsonResult(String sql) { 
    SqlQuery sqlQuery = Ebean.createSqlQuery(sql); 
    return ok(Json.toJson(sqlQuery.findList())); 
}