Search code examples
javaspring-mvcjasper-reports

Jasper Report pass one object to JRDataSource


I need to pass just one object to my jasper report page.When I send list it works but when I send one object like following code it doesnt work. How I can do it ?

Code of report maker method :

// generatePdfReport
@RequestMapping(method = RequestMethod.GET, value = "/report/{id}")
public ModelAndView generatePdfReport(@PathVariable(value = "id") Long id, ModelAndView modelAndView)
        throws JRException {

    LOG.info("--------------generate PDF report----------");

    Map<String, Object> parameterMap = new HashMap<String, Object>();

    java.util.List<Node> nodeList = new ArrayList<Node>();
    JRDataSource JRdataSource = new JRBeanCollectionDataSource(nodeList);

    Node node = nodeService.getOne(id);
    nodeList.add(node);
    parameterMap.put("datasource", JRdataSource);

    // pdfReport bean has ben declared in the spring configuration
    modelAndView = new ModelAndView("pdfReport", parameterMap);

    return modelAndView;

}

Solution

  • I have solved my problem with following codes,thanks to all :

    // generatePdfReport single node
    @RequestMapping(method = RequestMethod.GET, value = "/report/{id}")
    public ModelAndView generatePdfReport(@PathVariable(value = "id") Long id, ModelAndView modelAndView)
            throws JRException {
    
        LOG.info("--------------generate PDF report----------");
    
        Map<String, Object> parameterMap = new HashMap<String, Object>();
    
        java.util.List<Node> nodeList = new ArrayList<Node>();
        nodeList.add(nodeService.getOne(id));
    
        JRDataSource JRdataSource = new JRBeanCollectionDataSource(nodeList);
    
        parameterMap.put("datasource", JRdataSource);
    
        // pdfReport bean has ben declared in the spring configuration
        modelAndView = new ModelAndView("nodesReport_PDF", parameterMap);
    
        return modelAndView;
    
    }