Sim, estou usando o iReport.
O que acontece que preciso definir os parâmetros do subreport criando HashMap.
Segue o fonte para exemplo. Neste caso ainda não estou pegando os dados do subreport que criei.
// --- Set Background Relatórios --- //
String path_background = getServletContext().getRealPath("/template/topo_retrato.jpg");
// --- Fim Background Relatórios --- //
//Define caminho da LOGO
String image = getServletContext().getRealPath("/images/logo_auditoria.jpg");
// Define Parametros do Relatório
HashMap<String, String> parametros = new HashMap<String, String>();
parametros.put("BACKGROUND_TOPO", path_background);
parametros.put("LOGO", getServletContext().getRealPath(image));
parametros.put("SEQUENCIA", data [0][0]);
parametros.put("CAMINHO", data [0][1]);
parametros.put("LOGO", image);
// Define o tipo de retorno no browser
response.setContentType("application/pdf");
// Define qual o template deve ser utilizado
InputStream stream = getServletContext().getResourceAsStream("template/auditoria.jasper");
// Define os dados do relatório
List<Map<String, String>> dados = new ArrayList<Map<String, String>>();
for (int i = 1; i < data.length; i++) {
Map<String, String> record = new HashMap<String, String>();
record.put("SEQUENCIA", data [i][0]);
record.put("CAMINHO", data [i][1]);
dados.add(record);
}
// Inicia a geração do relatório
JRBeanCollectionDataSource fonteDados = new JRBeanCollectionDataSource(dados);
ServletOutputStream servletOutputStream = response.getOutputStream();
JasperRunManager.runReportToPdfStream(stream, servletOutputStream, parametros, fonteDados);
servletOutputStream.flush();
servletOutputStream.close();