我有一个简单的页面,我试图将值传递给可以用excel写的servlet。
当我获得使用request.getParameter(value)
传递的值并使用system.out.println(value)
时,它会打印传递的值。
当我尝试在excel中编写value
时,它会写入空白,但是当我写一个string
时,它会写出确切的string
。不知道最近发生了什么。需要帮助。
以下是剧本:
$(document).ready(function () {
$('#getFile').click(function () {
console.log( $('#test').val());
$.get('excelCreaterServlet', {name: $('#test').val()}, function (response) {
console.log(response);
window.open("excelCreaterServlet");
});
});
});
以下是servlet代码:
String name = request.getParameter("name");
System.out.println(name);
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(0);
HSSFCell cell1 = row.createCell(1);
cell.setCellValue(name);
cell1.setCellValue("teest");
ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
wb.write(outByteStream);
byte[] outArray = outByteStream.toByteArray();
response.setContentType("application/ms-excel");
response.setContentLength(outArray.length);
response.setHeader("Expires:", "0"); // eliminates browser caching
response.setHeader("Content-Disposition", "attachment; filename=testxls.xls");
OutputStream outStream = response.getOutputStream();
outStream.write(outArray);
outStream.flush();
答案 0 :(得分:1)
这是因为您在下面的代码中调用了两次servlet:
$.get('excelCreaterServlet',
{name: $('#test').val()},
function (response)
{
console.log(response);
window.open("excelCreaterServlet");
});
在获取期间和 window.open 期间的另一次没有名称参数,这会导致您的最终输出为空。
解决方案是使用以下代码,该代码应该可以正常工作:
window.open("excelCreaterServlet?name="+$('#test').val());