2014-02-26 1 views
1

jasper의 테이블을 채우기 위해 JEE 웹 앱에서 ireport로 정보를 전달하는 것과 관련된 다음과 같은 의심에 직면 해 있습니다.Jasper - ireport - java 웹 응용 프로그램 - 데이터 소스 정적 메서드

자바 빈에서 데이터 소스를 만들 때 Iref는 데이터를 재 스퍼로 보내고 테이블을 완성하는 정적 메서드를 요청합니다. 그러나, 내가 상태/stateless/관리 빈에서 정적 함수를 구현하고 컬렉션을 가지고있는 클래스를 jasper에 표시하려고 할 때마다 "정적 변수 XX는 정적 컨텍스트에서 참조 할 수 없습니다"라고 표시됩니다.

정적 메서드 내부에 EJB 인스턴스를 만들고 반환 할 컬렉션을 채우기 때문에 상황이 발생한다는 것을 알고 있습니다. 그러나 EJB 인스턴스를 생성해서는 안된다. 가능하다해도 새로운 인스턴스는 현재 EJB 컨텍스트와 동일한 정보를 가지지 않을 것이다.

해결 방법을 찾지 못했습니다. 추천이 있으십니까? 내가 JSF 2, 자바 EJB, JPA 및 글래스 피쉬 3.1

을 사용하고

당신의 현재 상태에 대한 참조를 가질 수 있도록

대신 정적 메소드의

답변

1

, 콩 주사를 사용하려고하면 감사 콩을 가져 와서 그것의 메소드를 사용하십시오.

2

Jasper 문서는 이해하기 너무 쉽지 않으므로 대부분 혼란 스러울 수 있습니다. 내가 한 것은 bean 주입을 통해 보고서에 보낸 클래스에 추가 JRBeanCollectionDataSource 특성을 만드는 것입니다. 이 새 속성은 Collection (목록)을 보내고 jasper 보고서에서는 이전에 언급 한 bean의 속성 값인 datasource를 테이블 내부에 선언했습니다.

<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd"> 
       <datasetRun subDataset="DosCoulmnas" uuid="1364a3ee-d385-49a0-9d12-e5bdd95832ac"> 
        <datasetParameter name="encabezados"> 
         <datasetParameterExpression><![CDATA[$F{dtoPDFAreaYGrado1.dtoEstablecimiento}.getEncabezados()]]></datasetParameterExpression> 
        </datasetParameter> 
        <dataSourceExpression><![CDATA[$F{dtoPDFAreaYGrado1.dtoEstablecimiento}.getDatos()]]></dataSourceExpression> 
       </datasetRun> 
관련 문제