У меня есть простой отчет о яшме, для которого не нужен источник данных, поэтому я использую 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){
}
}
Есть мысли, пожалуйста?