2010-07-29 25 views
2

Je travaille avec iReport 3.5.0 et j'utilise un sous-rapport dans mon rapport principal. Je ne veux pas donner le chemin absolu pour l'expression du sous-rapport, mais par exemple si je donne simplement "bpSubReport.jasper" comme expression du sous-rapport (parce que sub et main sont dans le même répertoire), alors iReport peut trouver bpSubReport.jasper et compilez le rapport principal dans bPReport.jasper, mais mon application Java (gwt) ne le peut pas. Il jette l'exceptionChemin relatif pour le sous-rapport

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

Pouvez-vous me aider sur la façon de donner un chemin relatif pour le sous-état et laisser l'application Java. le trouver aussi? Merci.

Répondre

4

Eh bien, j'ai une réponse.

Vous ne pouvez pas. Vous ne pouvez pas utiliser de chemins relatifs pour vos sous-rapports. Vous pouvez essayer de compiler les fichiers .jrxml lors de l'exécution ou de quelque chose, mais les chemins relatifs ne semblent pas fonctionner pour les projets avec des serveurs ou des systèmes de fichiers externes.

2

Vous pouvez utiliser:

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

Conservez tous vos jrxml dans les rapports dossier au titre des ressources (en classpath).

Paramètre créé:

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

Subreport élément créé:

<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>