Using Spring MVC i want to create a PDF from the model.

I have created a controller as below

@Controller
@RequestMapping("en/pdfdoc.gov")
@Transactional(propagation=Propagation.SUPPORTS)
public class PDFDocumentController extends SecurityController {

  @RequestMapping(method = RequestMethod.GET,params="action=allAssociations",headers="Accept=*/*")  
  public ModelAndView getAllassociations(HttpServletRequest request, HttpServletResponse response){

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

    revenueData.put("1/20/2010", "$100,000");
    revenueData.put("1/21/2010", "$200,000");
    revenueData.put("1/22/2010", "$300,000");
    revenueData.put("1/23/2010", "$400,000");
    revenueData.put("1/24/2010", "$500,000");


    return new ModelAndView("PdfRevenueSummary","revenueData",revenueData);

  }
}

and the view

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.view.document.AbstractPdfView;

import com.lowagie.text.Document;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.PdfWriter;

public class PdfRevenueReportView extends AbstractPdfView{

@Override
protected void buildPdfDocument(Map<String, Object> model, Document document,
        PdfWriter pdfWriter, HttpServletRequest request, HttpServletResponse response)
        throws Exception {
    // TODO Auto-generated method stub
    Table table= new Table(2);

     @SuppressWarnings("unchecked")
    Map<String,String> revenueData = (Map<String,String>) model.get("revenueData");


    table.addCell("Month");
    table.addCell("Revenue");

    for (Map.Entry<String, String> entry : revenueData.entrySet()) {

        table.addCell(entry.getKey());
        table.addCell(entry.getValue());

    }

    document.add(table);


}

}

the dispatcher-servlet.xml

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">


<property name="mediaTypes">
 <map>
   <entry key="atom" value="application/atom+xml"/>
   <entry key="html" value="text/html"/>
   <entry key="json" value="application/json"/>
 </map>
  </property>

  <property name="viewResolvers">
  <list>
  <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <property name="prefix" value="/WEB-INF/pages/"/>
     <property name="suffix" value=".jsp"/>
   </bean>  
  </list>
 </property>
 <property name="defaultViews">
  <list>
 <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
  </list>
 </property>
  </bean> 
 <bean id="pdfview" class="org.springframework.web.servlet.view.XmlViewResolver">
 <property name="order" value="0"/>
   <property name="location">  
            <value>/WEB-INF/spring-pdf-views.xml</value>
   </property>  
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass">
        <value>
            org.springframework.web.servlet.view.tiles2.TilesView
        </value>
    </property>  
</bean>

<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/tiles.xml</value>
        </list>
    </property>
</bean>

spring-pdf-views.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<bean id="PdfRevenueSummary"
    class="in.subrat.nayak.view.PdfRevenueReportView">
</bean>

</beans>

since the tiles.xml is working fine so i have not posted the code part.

the Issue in the above code is that when i return the view from controller by

return new ModelAndView("PdfRevenueSummary","revenueData",revenueData);

it is not getting redirected to the class PdfRevenueReportView as given in the spring-pdf-views.xml

so plz help me to get out of this problem

Hopes the above question is clear....

有帮助吗?

解决方案

after 2 days, i found what i needed

the issue was simple just made the class PDFDocumentController to extend the Class AbstractController

just made

public class PDFDocumentController extends AbstractController

instead of

public class PDFDocumentController extends SecurityController
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top