在JasperReport中填充JavaBean(4)


使用Parameters參數對象傳遞字符串的示例,本節將演示打印List接口中Userinfo.java實體類的示例,打印的數據源不是來自於Parameters對象,而是JRBeanCollectionDataSource對象。

新建Web項目,創建Userinfo.java實體類,結構如圖1.45所示。

然后把Userinfo.class的路徑配置到iReport軟件中,如圖1.46所示。

單擊 按鈕添加數據源,選擇JavaBean,並且設置選項如圖1.47所示

單擊OK按鈕后Fields節點下出現3個字段名稱,如圖1.48所示。

把這3個Fields對象添加到報表模板,如圖1.49所示。

字段id、username及password的值來自於List中的Userinfo.java實體類,而List就是打印報表的數據源,創建Servlet核心代碼如下:

@WebServlet("/demo4")
public class Demo4Servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try   
        { 
        List listUserinfo = new ArrayList();  
         for (int i = 0; i < 100; i++) {  
             listUserinfo.add(new UserInfo("id" + (i + 1), "username"  
             + (i + 1), "password" + (i + 1)));  
         }  
         String jrxmlSourcePath = this.getServletContext().getRealPath("/")  
         + "report3.jrxml";
         System.out.println(jrxmlSourcePath);  
         String jrxmlDestSourcePath = this.getServletContext().getRealPath("/")+"listUserinfo.jasper";  
         JasperCompileManager.compileReportToFile(jrxmlSourcePath,  jrxmlDestSourcePath);  
         InputStream isRef = new FileInputStream(new File(jrxmlDestSourcePath));  
         ServletOutputStream sosRef = response.getOutputStream();  
         response.setContentType("application/pdf");  
         JasperRunManager.runReportToPdfStream(isRef, sosRef, new HashMap(),  
         new JRBeanCollectionDataSource(listUserinfo));  
         sosRef.flush();  
         sosRef.close();  
     }   
     catch (JRException e)   
     {   // TODO Auto-generated catch block  
         e.printStackTrace();  
     }  
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

程序運行的效果如圖1.50所示:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM