Интеграция Spring Jasper с родительским и вспомогательным отчетом с использованием модели помимо SQL-запросов - PullRequest
0 голосов
/ 25 ноября 2010

У меня есть два кода домена:

public class domain1{

private string domain1Name;
private List<domain2> domain2List;

/* getter setter */
}

public class domain2{

private string domain2Name;

/* getter setter */
}

, и у меня есть Spring Controller, который возвращает карту, а затем передает ее модели со следующей функцией:

@SuppressWarnings("unchecked")
    @RequestMapping("preview")
    public String preview(Model model) { 
            List<Domain1> list = new ArrayList<Domain1>();
            Domain1 d1 = new Domain1();
            Iterator i = someData.iterator(); //<--this function successfully retrieve data, not null guaranted.
        while(i.hasNext()){
              Map.Entry me = (Map.Entry)i.next();
              d1 = (Domain1) me.getValue();
              list.add(d1);
        }

        Map mapz = new HashMap();
        mapz.put("domain1List", list); // first value as Domain1
        mapz.put("domain2List", d1.getDomain2List()); // second value as Domain2
        model.addAllAttributes(mapz);

        return "test_parentreport"; <- jasper bean lookup views from views.xml
    }

views.xml

<bean id="test_parentreport"
    class="org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView"
    p:url="/WEB-INF/jasper/test_parentreport.jrxml">
    <property name="headers">
        <props>
            <prop key="Content-Disposition">
                attachment; filename=test_parentreport.pdf
            </prop>
        </props>
    </property>
    <property name="subReportUrls">
        <map>
            <entry key="test_subreport" value="/WEB-INF/jasper/test_subreport.jrxml"/>
        </map>
    </property>
</bean>

test_parentreport.jrxml

...<field name="domain1Name" class="java.lang.String"/><detail><band height="125" splitType="Stretch">
        <textField>
            <reportElement x="0" y="0" width="555" height="51"/>
            <textElement/>
            <textFieldExpression class="java.lang.String"><![CDATA[$F{domain1Name}]]></textFieldExpression>
        </textField>
        <subreport>
            <reportElement positionType="Float" x="0" y="0" width="555" height="125" isPrintWhenDetailOverflows="true"/>
            <subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA[$P{test_subreport}]]></subreportExpression>
        </subreport>
    </band>
</detail>...

test_subreport.jrxml

...<field name="domain2Name" class="java.lang.String"/>
<detail>
    <band height="125" splitType="Stretch">
        <textField>
            <reportElement x="71" y="13" width="100" height="20"/>
            <textElement/>
            <textFieldExpression class="java.lang.String"><![CDATA[$F{domain2Name}]]></textFieldExpression>
        </textField>
    </band>
</detail>
<noData>
    <band height="50">
        <staticText>
            <reportElement x="0" y="0" width="555" height="20"/>
            <textElement textAlignment="Center"/>
            <text><![CDATA[NODATA ]]></text>
        </staticText>
    </band>
</noData>...

моя проблема:

представьте, что класс Domain1.c содержит только одинэлемент, он приносит список, который содержит 2 элемента,

-Domain1 <- я хочу заполнить это в test_parentreport.jrxml как родительский отчет --Domain2 --Domain2 <- я хочу заполнить эти два в test_subreport.jrxml </p>

когда я размещаю только 1 карту на контроллере, отчет исправляется на родительском объекте, но при вложении двух карт на контроллере НЕТ ДАННЫХ в подотчете, отчет показывает пустой как родительский, так и подчиненный отчет

я что-то упустил?пожалуйста, дайте мне понять, что идея заполнить оба родительских элемента и подчиненного отчета, используя Домен / Модель рядом с SQL-запросом, я пробую это на SQL-запросе, и родительский и вложенный отчет прекрасно работает, но он не работает, когда я изменяю его на модель.

1 Ответ

0 голосов
/ 22 декабря 2010

Вы можете найти некоторые подсказки, проверив мои руководства для Spring 3 MVC и Jasper:

Я предоставил загружаемую сборку Maven.Уроки очень подробны.Кроме того, само приложение хорошо прокомментировано.Просто оставьте комментарий, если учебники помогут вам:)

http://krams915.blogspot.com/p/tutorials.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...