2017-04-01 1 views
0

Jasper 보고서를 처음 사용했습니다. name, class 등의 정보와 배열 marks과 같은 정보가 들어있는 son 파일에서 pdf를 생성하려고합니다. 마크 배열을 테이블로 렌더링하려고합니다. Here테이블 필드의 JsonDataSource가 비어 있음 Jasper report

가 지금 같은 자바에서 이러한 전화,

File jsonFile = new File("/Volumes/Johny/Work/EclipseWorkspace/SecondReport/res/Marks.Json"); 
JasperDesign jasperDesign = JRXmlLoader.load(new File("/Volumes/Johny/Work/EclipseWorkspace/SecondReport/res/First.jrxml")); 
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); 

parameters.put(JsonQueryExecuterFactory.JSON_INPUT_STREAM, new FileInputStream(jsonFile)); 
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters); 
JasperExportManager.exportReportToPdfFile(jasperPrint, "/Users/johnykutty/Desktop/Sample2.pdf"); 

다른 필드지고있다 - 내 JSON은

전체 jrxml

<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource()]]></dataSourceExpression> 
으로 내가 subdatasource 발현 준

{"data": {"name" : "Johny", 
    "class" : "A2", 
    "sub" : "cs", 
    "interest" : "films", 
    "marks" : [{ 
       "subject" : "Maths", 
       "mark" : "24", 
       "grade" : "A", 
       "remarks" : "", 
       "slNo" : "1" 
       }, 
       { 
       "subject" : "English", 
       "mark" : "24", 
       "grade" : "A", 
       "remarks" : "", 
       "slNo" : "2" 
       }, 

       ] 
}} 

입니다 채워지지만 테이블 값은 null로 표시됩니다.

답변

1

에서 찾을 수있는 답변 here dataSourceExpression에 배열의 키를 전달해야했습니다. 그래서, dataSourceExpressionsubDataSource() 방법

<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("marks")]]></dataSourceExpression> 

참고 "마크"매개 변수처럼해야

관련 문제