Jsp jasper报告和struts2

Jsp jasper报告和struts2,jsp,struts2,jasper-reports,Jsp,Struts2,Jasper Reports,这可能是个棘手的问题 我使用jaspersoft studio创建了一个报告:myreport.jrxml,它工作得非常好: <?xml version="1.0" encoding="UTF-8"?> <!-- Created with Jaspersoft Studio version last--> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xs

这可能是个棘手的问题

我使用jaspersoft studio创建了一个报告:myreport.jrxml,它工作得非常好:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version last-->
<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="Blank A4" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="36f7dbef-85e9-4a2e-bc9a-61e146a441b6">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="ISA"/>
    <queryString>
        <![CDATA[select nom, prenom from beneficiaire where nni='105011411873713']]>
    </queryString>
    <field name="NOM" class="java.lang.String"/>
    <field name="PRENOM" class="java.lang.String"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <pageHeader>
        <band height="147" splitType="Stretch">
            <image>
                <reportElement uuid="ca704754-4477-48ed-999d-29bc717e08d3" x="0" y="0" width="50" height="50"/>
                <imageExpression><![CDATA["C:/Documents and Settings/DAVENNE-09298/Bureau/logo_assurance_maladie.gif"]]></imageExpression>
            </image>
            <staticText>
                <reportElement uuid="29581e3a-a202-43c1-b3c9-47a56d05edfe" x="0" y="60" width="121" height="25"/>
                <textElement>
                    <font size="8" isBold="false"/>
                </textElement>
                <text><![CDATA[SERVICE  ADMINISTRATIF
DU CENTRE APPAREILLAGE]]></text>
            </staticText>
            <textField>
                <reportElement uuid="7049158d-a7e1-4c10-adb0-2e10e11bbcb7" x="380" y="80" width="175" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{NOM} + ' ' + $F{PRENOM}]]></textFieldExpression>
            </textField>
        </band>
    </pageHeader>
    <detail>
        <band height="253" splitType="Stretch">
            <staticText>
                <reportElement uuid="c6bb6b7e-5316-49fb-b3c4-90faed1f4fcc" x="3" y="15" width="552" height="20"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[A L'ATTENTION DE VOTRE MUTUELLE]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="c3e93907-b312-437f-b032-68c919387986" x="0" y="50" width="554" height="130"/>
                <textElement/>
                <text><![CDATA[Madame, Monsieur,

La fourniture ....

Le montant ...

Recevez, Madame, Monsieur, mes sincères salutations]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="f71b41b6-02fb-44d4-9c8d-f10cc78d4b83" x="370" y="200" width="186" height="51"/>
                <textElement/>
                <text><![CDATA[LE RESPONSABLE DU SERVICE

]]></text>
            </staticText>
        </band>
    </detail>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
</jasperReport>
有几件事我很确定:

  • 找到jasper文件是因为我没有FileNotFoundException

  • 找到数据源是因为我调试并调用了getter,它不是空的,数据在里面

  • 最后一件事。。当然,我的对象results有'nom'和'prenom'属性

    无论如何,我得到了一个我不理解的nullpointerException:

    java.lang.NullPointerException
        net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
        net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
        org.apache.struts2.views.jasperreports.JasperReportsResult.doExecute(JasperReportsResult.java:326)
        org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
        com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:361)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
        isa.presentation.intercepteur.IsaExceptionXMLIntercepteur.intercept(IsaExceptionXMLIntercepteur.java:29)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163)
        com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:251)
        org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
        com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
        com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
        com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:270)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
        com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:164)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
        org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:498)
        org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)
        org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    

    多亏了Aleksandr,我升级了jasperReport库,并得到了我的pdf文件。 但是name和firstname是空的。 当我调试应用程序时,我可以通过getter看到对resultats变量的调用,name/firstname属性不是null,而是具有良好的值


    那么?有什么想法吗?

    当然很敏感


    所以不是NOM和PRENOM而是NOM和PRENOM

    您使用的是哪个版本的JasperReports和struts2 jasperreport插件?jasperreport:1.2.8和插件2.1.8尝试升级您的jasperreport。好的。。我升级到jasperReport 4.5.1,这迫使我添加了另一个jar groovy-all-1.6-beta-2.jar…我有另一个错误,这显然发生在我的nullPointerException之后…所以你是对的,这是一个版本问题。。。我将更改我的帖子以添加新错误无需。。我需要groovy的2.0.5版
    <result-type name="jasper" class="org.apache.struts2.views.jasperreports.JasperReportsResult"/>
    
    <action name="testCourrierMutuellePDF" class="isa.presentation.jasper.CourrierMutuellePDF">
        <result name="success" type="jasper">
            <param name="location">jasper/courriers/myreport.jasper</param>
            <param name="dataSource">resultats</param>
            <param name="format">PDF</param>
        </result>
     </action>
    
    private Beneficiaire resultats;
    
    public String execute() {
            try {
                GestionBeneficiaireFacade facade = GestionBeneficiaireFacade.getInstance();
                resultats = facade.recupererBeneficiaire("105011411873713");
            } catch (IsaException e) {
                this.addActionMessage(this
                        .getText("error.benefInfosAction.sauverBenef"));
                this.isaException = e;
                return ERROR;
            }
            return SUCCESS;
        }
    
    public Beneficiaire getResultats() {
            return this.resultats;
    }
    
    java.lang.NullPointerException
        net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
        net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
        org.apache.struts2.views.jasperreports.JasperReportsResult.doExecute(JasperReportsResult.java:326)
        org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
        com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:361)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265)
        isa.presentation.intercepteur.IsaExceptionXMLIntercepteur.intercept(IsaExceptionXMLIntercepteur.java:29)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163)
        com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:251)
        org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
        com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
        com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
        com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:270)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
        com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:164)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
        org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
        org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:498)
        org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)
        org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)