0

我已经使用 struts2 和 hibernate 框架创建了一个 Web 应用程序。在我的应用程序中,我计划使用 jasper report 进行报告,我通常在桌面应用程序中使用它来进行报告。在桌面应用程序中调用 jasper 报告非常容易。但是在使用 struts2 和 hibernate 框架的 Web 应用程序中,我不知道如何在 jsp 中调用 jasper 报告。谁能告诉我如何在使用 struts2 和 hibernate 框架的 web 应用程序中集成 jasper 报告

这是我到目前为止所做的源代码

Sample.jasper位于带有 struts.xml 和 hibernate.conf.xml 的默认文件夹中(它都在预览模式下工作)

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report name" pageWidth="595" pageHeight="842" columnWidth="535" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a309cf26-d77c-4e85-8d52-2a89cff70117">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="43"/>
    <queryString language="hql">
        <![CDATA[FROM Login]]>
    </queryString>
    <field name="id" class="java.lang.Integer"/>
    <field name="name" class="java.lang.String"/>
    <field name="pass" class="java.lang.String"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch"/>
    </title>
    <pageHeader>
        <band height="35" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="61" splitType="Stretch">
            <staticText>
                <reportElement uuid="5eaebc5a-8cc1-45dd-9596-c4057ea97aed" x="118" y="41" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[NAME]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="5eaebc5a-8cc1-45dd-9596-c4057ea97aed" x="271" y="41" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[PASSWORD]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="30" splitType="Stretch">
            <textField>
                <reportElement uuid="07e4ccc0-6491-4a87-b03b-bed972fb344d" x="118" y="4" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="07e4ccc0-6491-4a87-b03b-bed972fb344d" x="271" y="4" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{pass}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>

struts.xml(我不知道如何从动作中调用碧玉)

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <!-- Configuration for the default package. -->
   <package name="default" extends="struts-default">

    </package>
</struts>
4

1 回答 1

1

看看Struts2 JasperReport 教程(下一次,提问之前;)

然后,您的包应该扩展jasperreports-default(为使用 JasperReports 而创建的特定拦截器堆栈),而不是struts-default

<package name="default" namespace="/" extends="jasperreports-default">

并且您的 Action 应该返回一个Jasper 结果类型

<result name="success" type="jasper">
    <param name="location">/jasper/our_compiled_template.jasper</param>
    <param name="dataSource">myList</param>
    <param name="format">PDF</param>
</result>

还要确保您拥有最新的 Struts2 版本,大多数选项都Struts2 2.1.2+兼容...

于 2013-01-28T13:17:23.567 回答