Comment utiliser JasperReports avec Spring MVC?
J'ai été à enquêter sur l'utilisation de JasperReports (6.0.0) avec Spring MVC (4.1.3) pour générer des rapports PDF. Le printemps est en proie à un "Printemps " spécifique" des façons d'intégrer avec JasperReports pour générer des fichiers Pdf:
- Utilisation
JasperReportsPdfView
s'appuie sur maintenant obsolète JasperReport caractéristiques - Utilisation
JasperReportsMultiFormatView
- Utilisation
JasperReportsViewResolver
J'ai eu du mal à trouver de bons exemples complets en ligne et je voulais partager mes découvertes (voir ma réponse ci-dessous).
N'hésitez pas à ajouter d'autres méthodes et/ou des améliorations liées à "Comment puis-je intégrer JasperReports avec Spring4"?
- Ceci est un exemple de l'utilisation de jasper rapport sur spring mvc projet: github.com/dihaw-team/dihaw-spring-jasperreports
Vous devez vous connecter pour publier un commentaire.
Basé sur mes recherches, j'ai trouvé la suite de l'utilisation de méthodes. Les méthodes de commencer avec la plus directe (naïve) approche impliquant moins de front de la complexité de la configuration et évoluer pour devenir plus abstraite, mais avec plusieurs dépendances sur Printemps /plus complexes configuration Spring.
Méthode 1: Utilisation de la JasperReports API directement dans le Contrôleur
Il suffit d'écrire le contenu de la servlet flux de sortie.
Méthode 2: Injecter JasperReportPdf Vue Contrôleur
Compte tenu de la JasperReportsPdfView bean:
Ce point de vue peut être injecté ou câblé dans le Contrôleur pour utiliser:
Notez que l'utilisation de la
JasperReportsPdfView
(ou le plus polyvalentJasperReportsMultiFormatView
) nécessite une dépendance sur le printemps-cadre-support:Méthode 3: Utilisation de XML ou de ResourceBundle afficher le programme de résolution de la carte logique d'afficher les noms de JasperReport vues
Configurer une nouvelle vision de résolution, dans ce cas, le
ResourceBundleViewResolver
à courir avant laInternalResourceViewResolver
. Ceci est basé sur l'ordre des valeurs de set (0 se passe avant le 1):Puis, à la racine du classpath, le
jasperreport-views.properties
fichier peut contenir de la vue logique nom jumelé avec la classe et les valeurs de propriété (c'est à dire l'url et reportDataKey) pertinentes à déchirer la JasperReport:Le contrôleur de code ressemble à ceci:
J'aime cette approche. Les contrôleurs de rester "muet" et ne traite qu'avec des valeurs de Chaîne et le mappage des noms de points de vue peut se produire en un seul endroit.
Méthode 4: Utiliser JasperReportsViewResolver
Configurer un zéro-commandé
JasperReportViewResolver
et l'astuce est d'utilisersetViewNames
dire Ressort de vue logique des noms que vous voulez cette résolution à traiter (sinon vous vous retrouvez avec "impossible de charger le JasperReports rapport de chemin de classe de ressource [jasperreports/index.jasper]" type d'erreurs):Et à l'intérieur du contrôleur:
C'est mon approche préférée. Les contrôleurs de résoudre jasper reports de façon similaire à la façon dont jsp vues sont résolues en utilisant la
InternalResourceViewResolver
et il n'y a donc pas de nécessité expresse de mappage de fichier en tant que fichier xml ou un fichier de propriétés de l'approche dans la méthode #3 ci-dessus.MODIFIER
La javadoc
JasperReportsPdfView
mentionner il utilise le obsolèteJRExporter
API. Est-il mieux (plus récente) JasperReports vue de leur utilisation? Peut-être en optant pour laJasperReportsMultiFormatView
est une meilleure option, car elle ne semble pas utiliserJRExporter
.