В этом случае вам не нужно использовать AJAX. Просто нажмите кнопку, чтобы отправить форму в действие Struts, и используйте действие stream result type.
Пример:
В вашем Struts XML:
<result name="download" type="stream">
<param name="contentDisposition">attachment;filename=report.xls</param>
<param name="contentType">application/vnd.ms-excel</param>
<param name="inputName">inputStream</param>
<param name="bufferSize">1024</param>
</result>
Ваше действие предоставит public InputStream getInputStream()
для передачи данных.
Я предполагаю, что любая библиотека, которую вы используете для генерации файлов Excel ( POI ?), Может записать вывод в произвольный OutputStream
.
Быстрый и грязный способ преобразовать это в InputStream
:
// Using Workbook from Apache POI for example...
Workbook wb;
// ...
ByteArrayOutputStream bos = new ByteArrayOutputStream();
wb.write(bos);
InputStream bis = new ByteArrayInputStream(bos.toByteArray());