Я пытаюсь сгенерировать некоторые отчеты и загрузить их как csv file
, используя Java Spring MVC Web Application
.У меня есть список данных, отображаемых в браузере с возможностью выбора нескольких строк, и я пытаюсь создать CSV-файл с выбранными строками и загрузить CSV-файл.Мой метод контроллера выглядит следующим образом:
public String downloadBusinessAsFile(@ModelAttribute("ids") String selectedIds, HttpServletRequest request, HttpServletResponse response, ModelMap model)
{
String fileName = new SimpleDateFormat("yyyyMMddHHmmss'.csv'").format(new Date());
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition","attachment;filename="+fileName);
try
{
Map<String, Obj> sessionBusinesses = (Map<String, Obj>) httpSession.getAttribute("objMap");
ServletOutputStream out = response.getOutputStream();
StringBuffer sb = reportService.writeBusinessesToCSV(selectedIds, sessionData);
InputStream in =
new ByteArrayInputStream(sb.toString().getBytes("UTF-8"));
byte[] outputByte = new byte[4096];
//copy binary contect to output stream
while(in.read(outputByte, 0, 4096) != -1)
{
out.write(outputByte, 0, 4096);
}
in.close();
out.flush();
out.close();
httpSession.invalidate();
}
catch (Exception e)
{
e.printStackTrace();
}
return "success";
}
StringBuffer
возвращенный объект имеет требуемое значение.Я использую следующие сценарии для вызова метода контроллера:
$(document).on('click', '#add-biz', function(){
var selectedRow = '';
for (var i = 0; i< $('#datTable tbody tr.selected').length; i++)
{
if (i <= 0)
{
selectedRow+=$('#datTable tbody tr.selected')[i].id;
}
else
{
selectedRow+=','+$('#datTable tbody tr.selected')[i].id;
}
}
var url = $("#addUrl").val();
$.ajax(
{
url : url,
type: "GET",
data : {ids: selectedRow},
dataType : "html",
success:function(htmlData)
{
if(htmlData == "error")
{
$('#btn-div').html("<p>An error occurred</p>")
}
else
{
$("#successAlert").show();
}
$('#divLoading').hide();
},
error: function( xhr, status, errorThrown ) {
console.log( "Error: " + errorThrown );
console.log( "Status: " + status );
console.dir( xhr );
},
});
});
Я не получаю никаких ошибок при запуске кода, но не вижу никакой опции загрузки.