2010-07-29 4 views
2

Я работаю с iReport 3.5.0, и я использую субрепорт внутри моего основного отчета. Я не хочу давать абсолютный путь для выражения subreport, но, например, если я просто передаю «bpSubReport.jasper» как выражение подрепортажа (потому что sub и main находятся в одном каталоге), iReport может найти bpSubReport.jasper и скомпилируйте основной отчет в bPReport.jasper, но мое приложение Java (gwt) не может. Он бросает за исключениемОтносительный путь для Subreport

net.sf.jasperreports.engine.JRException: Could not load object from location : bpSubReport.jasper

Можете ли вы помочь мне о том, как дать относительный путь для подотчета и пусть приложение Java. найти его также? Благодарю.

ответ

4

Ну, я получил ответ.

Вы не можете. Вы не можете использовать относительные пути для своих подписок. Вы можете попытаться скомпилировать файлы .jrxml во время выполнения или что-то в этом роде, но относительные пути, похоже, не работают для проектов с внешними серверами или файловыми системами.

2

Вы можете использовать:

Map paramater = new Hasmap(); 
paramater.put("SUBREPORT_DIR",source);// source is path your subreport 
0

Храните все ваши jrxml в отчетах папку под ресурсами (в пути к классам).

Параметр создано:

<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> 
     <defaultValueExpression><![CDATA["reports/"]]></defaultValueExpression> 
    </parameter> 

Вложенный элемент создан:

<elementGroup> 
       <subreport> 
        <reportElement uuid="60c50685-03c7-452b-b37a-dda4a2092d18" positionType="Float" mode="Transparent" x="15" y="567" width="517" height="200" isRemoveLineWhenBlank="true" backcolor="#FFFFFF"/> 
        <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(yourList)]]></dataSourceExpression> 
        <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "your_subreport.jasper"]]></subreportExpression> 
       </subreport> 
      </elementGroup> 
Смежные вопросы