2016-09-21 16 views
0

POJOを使用してpdfファイルを作成しようとしていますが、mvc.iをSpringを使用してダウンロードしようとしましたが、Documentオブジェクトを取得しましたが、エラー "コンバータが見つかりませんでした"が表示されます。jspを使用したSpringオブジェクトmvcを使用したドキュメントオブジェクト

@RequestMapping(value = "/downloadPDF", method = RequestMethod.GET) 
public Document downloadPDF() throws FileNotFoundException, DocumentException { 
    // create some sample data 
    List<EmployeeInfo> employeeList = new ArrayList<EmployeeInfo>(); 
    employeeList.add(new EmployeeInfo("1", "Anish", "surat")); 
    return downloadPDFService.createPDF(employeeList); 

このファイルはどのようにダウンロードできますか? 答えを提供してください

public Document createPDF(List<EmployeeInfo> employeeList) throws FileNotFoundException, DocumentException { 

    Document document = new Document(); 
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("AddTableExample.pdf")); 
     document.open(); 
     PdfPTable table = new PdfPTable(3); 
     table.setWidthPercentage(100); //Width 100% 
     table.setSpacingBefore(10f); //Space before table 
     table.setSpacingAfter(10f); //Space after table 
     PdfPCell cell = new PdfPCell(); 
     cell.setBackgroundColor(BaseColor.BLUE); 
     cell.setPadding(5); 
     Font font = FontFactory.getFont(FontFactory.HELVETICA); 
     font.setColor(BaseColor.WHITE); 
     cell.setPhrase(new Phrase("Id", font)); 
     table.addCell(cell); 

     cell.setPhrase(new Phrase("Name", font)); 
     table.addCell(cell); 

     cell.setPhrase(new Phrase("Address", font)); 
     table.addCell(cell); 
     for (EmployeeInfo aBook : employeeList) { 
      table.addCell(aBook.getEmpId()); 
      table.addCell(aBook.getEmpName()); 
      table.addCell(aBook.getEmpAddress()); 
     } 
     document.add(table); 
     document.close(); 
     writer.close(); 
     return document; 
} 

これは、ビューcreator.nextは、トレースにスタックされている

HTTP Status 500 - Request processing failed; nested exception is   java.lang.IllegalArgumentException: 
No converter found for return value of  type: class com.itextpdf.text.Document 
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class com.itextpdf.text.Document 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982) 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

根本的な原因は、JSPをしたくないけど、あなたはまだのModelAndViewを使用することができます

java.lang.IllegalArgumentException: No converter found for return value of type: class com.itextpdf.text.Document 
org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:178) 
org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:153) 
org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:165) 
org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:80) 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:126) 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814) 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737) 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
+0

完全なスタックトレースを共有できますか? –

+0

PDFビューを定義しましたか?ここには[spring mvc pdf]の完全な例があります(http://www.kswaughs.com/2016/04/spring-mvc-pdf-view-example.html) – kswaughs

+0

はい、私はpdfビューを定義しました。私は完全なコードとスタックトレースを共有します –

答えて

1

  1. DownloadPDFServiceを次のように変更します。

    @RequestMapping(value = "/downloadPDF", method = RequestMethod.GET) 
    public Document downloadPDF() throws FileNotFoundException, DocumentException { 
        // create some sample data 
        List<EmployeeInfo> employeeList = new ArrayList<EmployeeInfo>(); 
        employeeList.add(new EmployeeInfo("1", "Anish", "surat")); 
        return new ModelAndView("pdfView", "employeeList", employeeList); 
    } 
    
  2. は、以下の追加以下のように

    @Component 
    public class DownloadPDFService extends AbstractPdfView { 
    
    @Override 
    protected void buildPdfDocument(Map<String, Object> model, Document doc, 
        PdfWriter writer, HttpServletRequest req, HttpServletResponse resp) 
        throws Exception { 
    
        // Retrieve your model as below 
        List<EmployeeInfo> employeeList = (List<EmployeeInfo>) model.get("employeeList"); 
    
        // continue your document build logic 
    
        } 
        } 
    
  3. 変更あなたのコントローラはviews.properties

    pdfView.(class)= YourpackageName.DownloadPDFService 
    
  4. 設定上記の "ビュー" の特性のための新しいResourceBundleViewResolver

    にコンフィギュレーションを表示します。

+0

ありがとう@kswaughsそれは働いた。 downloadPDFドキュメントの戻り値の型をModelAndViewに変更するだけです –

関連する問題