Добавить карту параметров в Jasperreport на Spring MVC - PullRequest
3 голосов
/ 03 сентября 2010

У меня есть простой отчет о яшме, для которого не нужен источник данных, поэтому я использую JREmptyDataSource. Он опирается только на карту параметров, которая используется для заполнения отчета

<?xml version="1.0"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net....>

<parameter name="param1" class="java.lang.String"/>
<parameter name="param2" class="java.lang.String"/>
    <detail>
        <band height="35">
            <staticText>
                <reportElement x="20" y="0" width="115" height="30"/>
                <text>
                    <![CDATA[Parameter Values:]]>
                </text>
            </staticText>
            <textField>
                <reportElement x="135" y="11" width="100" height="19"/>
                <textFieldExpression>
                    <![CDATA[$P{param1}]]>
                </textFieldExpression>
            </textField>
            <textField>
                <reportElement x="250" y="11" width="100" height="19"/>
                <textFieldExpression>
                    <![CDATA[$P{param2}]]>
                </textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

Моя проблема в том, что я не могу найти ссылку на то, как отправить карту параметров в моем контроллере модели Spring. Для источника данных, в соответствии с Spring Docs, просто добавьте атрибут источника данных на карту модели, что я уже сделал, а затем добавьте объект JREmptyDataSource

Но как насчет карты параметров? Какое имя атрибута я могу использовать, чтобы оно соответствующим образом заполнило мой отчет?

public ModelAndView generateReport(HttpServletRequest request,
    HttpServletResponse response) {
    Map model = new HashMap();

    model.put("datasource", new JREmptyDataSource());
    //how to send the parameter map?  

    return new ModelAndView("report", model);
}

В обычном заполнении, используя только сервлет, я нашел ресурс в сети, который делает это. Как я могу отправить карту параметров в случае Spring MVC?

protected void doGet(HttpServletRequest request, HttpServletResponse
    response)throws ServletException, IOException
{
    ServletOutputStream servletOutputStream = response.getOutputStream();
    InputStream reportStream = getServletConfig().getServletContext()
        .getResourceAsStream("/reports/reports.jasper");
    HashMap parameterMap = new HashMap();
    parameterMap.put("paramName", "paramValue");
    try
    {
        JasperRunManager.runReportToPdfStream(reportStream,
            servletOutputStream, parameterMap, new JREmptyDataSource());
        response.setContentType("application/pdf");
        servletOutputStream.flush();
        servletOutputStream.close();
    }catch(Exception e){
    }
}

Есть мысли, пожалуйста?

1 Ответ

2 голосов
/ 04 сентября 2010

Посмотрев на эту страницу , вы рассматриваете хеш-карту, которую используете для передачи источника данных, как карту параметров, добавляя параметры как нормальные и передавая карту, как показано ниже.

Map model = new HashMap();
model.put("paramName", paramValue);
return new ModelAndView("report.name", model);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...