Относительный путь для подотчета
Я работаю с iReport 3.5.0 и использую подотчет в своем основном отчете. Я не хочу указывать абсолютный путь для выражения подотчета, но, например, если я просто задаю "bpSubReport.jasper" в качестве выражения подотчета (поскольку sub и main находятся в одном каталоге), то iReport может найти bpSubReport.jasper и скомпилировать основной отчет в bPReport.jasper, но мое приложение Java (gwt) не может. Это исключение
net.sf.jasperreports.engine.JRException: Could not load object from location : bpSubReport.jasper
Можете ли вы помочь мне, как дать относительный путь для подотчета и запустить приложение Java. найти это тоже? Благодарю.
3 ответа
Ну, я получил ответ.
Ты не можешь Вы не можете использовать относительные пути для своих подотчетов. Вы можете попытаться скомпилировать файлы.jrxml во время выполнения или чего-то еще, но относительные пути не работают для проектов с внешними серверами или файловыми системами.
Ты можешь использовать:
Map paramater = new Hasmap();
paramater.put("SUBREPORT_DIR",source);// source is path your subreport
Держите все ваши jrxml в папке отчетов под ресурсами (в classpath).
Параметр создан:
<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>