2012-12-20 5 views
0

JasperReport에 몇 가지 문제점이 있습니다. iReport를 통해 * .jrxml 파일을 생성했습니다. 나는 몇몇 분야를 정의했다. 이제 Java 응용 프로그램에서 이러한 필드를 설정하려고하지만 작동하지 않습니다. 필드는 *은 .jrxml 파일에 나와있다 JasperReport 설정 매개 변수

JasperReport report; 
    JasperPrint print; 

    HashMap<String, Object> parameters = new HashMap<String, Object>(); 

    parameters.put("logoPath", "\\logo.jpg"); 
    parameters.put("companyName", "Company Name"); 

    try { 
     report = JasperCompileManager 
       .compileReport("JRXML\\Template.jrxml"); 

     for (JRField field : report.getFields()) { 
      System.out.println(field.getName() + "|" 
        + field.getValueClassName()); 
     } 

     print = JasperFillManager.fillReport(report, parameters, 
       new JREmptyDataSource()); 
     JasperExportManager.exportReportToPdfFile(print, 
       "\\temp\\Example.pdf"); 

     JasperViewer.viewReport(print); 

    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     Logger.getLogger(Example1.class.getName()).log(Level.ALL, 
       e.getLocalizedMessage()); 

     e.printStackTrace(); 
    } 

처럼

내 코드 보인다.

당신의 도움에 감사드립니다.

+0

필드 또는 매개 변수에 대해 이야기하고 있습니까? 나는 당신이 필드를 인쇄하는 것만보고 결코 설정하는 것을 볼 수 없다. – gresdiplitude

+0

.jrxml 파일에서 나는 logoPath와 companyName이라는 이름으로 필드를 정의했다. 그리고 내가 읽은 튜토리얼은 키가 필드 이름 인 HashMap을 사용하여 필드를 설정할 수 있다고 말했습니다. Thougt 메소드 fillReport()를 사용하여 매개 변수를 설정합니다. – ZeusNet

답변

3

필드와 매개 변수를 혼동하고 있습니다. 매개 변수는 <parameter name="companyName" class="java.lang.String" isForPrompting="false">으로 정의되고 필드는 <field name="companyName" class="java.lang.String"/>으로 정의됩니다. jrxml에서 회사 이름을 매개 변수로 변환하면 제대로 작동합니다.

튜토리얼

매개 변수를 this에서

매개 변수가 전달-에 작업을 작성 보고서 에 객체에 대한 참조입니다. 이 보고서는 일반적으로 데이터 소스에서 찾을 수없는 보고서 엔진 데이터로 전달할 때 매우 유용합니다.

필드

보고서 필드는 루틴을 생성하는 보고서에 데이터 소스 에서 데이터를 매핑 할 수있는 유일한 방법을 나타냅니다. 보고서의 데이터 소스가 ResultSet이면 모든 필드는 ResultSet 개체의 해당 열로 매핑되어야합니다. 즉, 매핑되는 열과 이름이 같아야하며 호환되는 유형이어야합니다.

ORIGINAL 답변 :

재스퍼 파일 위치를 확인하는 데 사용할 logo.jpg, 대한 FileResolver를 사용합니다.

FileResolver fileResolver = new FileResolver() { 
@Override 
public File resolveFile(String fileName) { 
URI uri = null; 
try { 
uri = new URI(this.getClass().getResource("/" + fileName).getPath()); 
} catch (URISyntaxException e) { 
} 
return new File(uri.getPath()); 
} 
}; 

HashMap<String, Object> parameters = new HashMap<String, Object>(); 

parameters.put("logoPath", "\\logo.jpg"); 
parameters.put("companyName", "Company Name"); 
parameters.put("REPORT_FILE_RESOLVER", fileResolver); 
... 
print = JasperFillManager.fillReport(report, parameters, 
new JREmptyDataSource()); 
+0

답해 주셔서 고맙지 만 문제가 해결되지 않았습니다. pdf-File에서 모든 필드는 null로 표시됩니다. – ZeusNet

+0

ok "Company Name"이 나타나는 경우 자바 코드와 jrxml 모두에서 logo.jpg에 대한 부분을 주석으로 처리하고 "Company Name"이 표시되면 파일 해결 프로그램에서 문제가 발생하며 매개 변수에 문제가있는 것이 좋습니다. – gresdiplitude

+0

xml 및 java 응용 프로그램에서 logoPath 필드를 주석 처리했지만 companyName 값이 여전히 null입니다. – ZeusNet