2012-02-20 2 views
3

일반 SQL 테이블에서 "테이블"구조를 얻는 좋은 방법을 얻게되어 기쁩니다. http://code.google.com/apis/chart/interactive/docs/reference.html#DataTable 그러나, HTML의 예를 갖는 하나 도움이 될 것이다 : 내 특정 경우Play Framework : 일반 SQL 테이블에서 테이블 구조를 렌더링하는 방법

, 나는 Google 시각화 API "데이터 테이블"개체에 의해 사용되는 JSON 구조를 렌더링 할 필요가있다.

"원본"은 "일별"(날짜), "제품"및 "DailySaleTotal"(해당 제품의 일일 판매) 열입니다. 내 "모델"이 위의 3 칸짜리 테이블을 반영한다는 것을 상기하십시오.

테이블 열은 "제품"이어야합니다 (예 : 매우 적은 수). 각 행은 특정 날짜를 나타내고 행 데이터는 해당 날짜의 실제 매출입니다.

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

나는 템플릿에 중첩 # {목록} 태그를 사용하려고했지만, 불행하게도 나는 "목록"은 "행 데이터를"대표와 템플릿을 제공하는 자연적인 방법을 찾지 못했습니다.

당연히 Java에서 "도우미 개체"를 만들어서 날짜별로 "판매 데이터"항목 목록을 만들 수 있습니다. 그러나 이것은 나에게 이상하게 보입니다.

나는 우아한 솔루션을 제공 할 수있는 사람에게 감사 할 것입니다.

최대

+0

"소스는 일반 SQL 테이블입니다"당신이 \의 t으로 구분되어 보여처럼 당신은 일반 텍스트를 의미 \ n? – gre

답변

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 렌더링을 적용 할 수 있습니다. 여기 배열의 배열입니다. 대신 JSON 자신을 생성

2

, 셉 제안처럼, 당신은 그것을 생성 할 수 있습니다

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