سؤال

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