java - What is the "correct" way to have a Spring MVC controller return an excel xslx spreadsheet -


i have come @ least 3 different ways handle this.

1) use @responsebody , return string csv:

@requestmapping(value = "googlestorereport", produces = "text/csv") @responsebody public string googlestorereport(httpservletrequest request, httpservletresponse response, model model) {     list<store> stores = storeservice.getactivestores();     list<sapstore> sapstores = sapstoreservice.getallsapstores();     response.setheader("content-disposition", "attachment; filename=\"google_places_bulk_store_upload.csv\"");     response.setcontenttype("text/csv");     stringbuilder sb = new stringbuilder(); .... create file contents ....     return sb.tostring(); } 

2) use view described here: (i have create own version of spring abstractexcelview) http://www.technicalkeeda.com/spring-tutorials/generate-excel-using-spring-mvc approach here have controller return modelandview object list of objects containing row data. have view object converts list spreadsheet using poi , writing spreadsheet stream reponse object.

3) extend abstracthttpmessageconverter using mappingjackson2httpmessageconverter template. instead of modelandview object return list. messageconverter works same way viewresolver works on different part of request lifecycle. (translates list stream of spreadsheet data)

i down recommended: extending abstractview or abstracthttpmessageconverter. did find nice post 3 years ago http://java.dzone.com/articles/rest-spring author has same problem have. make matters more confusing, spring mvc seems use both approaches..

have considered extending 1st solution include other xml based api jasper reports decoupling data view?


Comments

Popular posts from this blog

java - Oracle EBS .ClassNotFoundException: oracle.apps.fnd.formsClient.FormsLauncher.class ERROR -

c# - how to use buttonedit in devexpress gridcontrol -

nvd3.js - angularjs-nvd3-directives setting color in legend as well as in chart elements -