url传参为空怎么解决?
问题描述:
url=append+'/report/download2.do?name='+name传到后台name为空。
js
$("#btn_his_download").on("click", function () {
var name = $("#lines").find("option:selected").text();
var $form = $('<form method="GET"></form>');
$form.attr('action', appName + '/report/download2.do?name='+name);
$form.appendTo($('body'));
$form.submit();
});
controller
@RequestMapping("/download2.do")
public void download2(HttpServletRequest request, HttpServletResponse response) throws IOException {
String name = request.getParameter("name");
System.out.println(name);
String fileName = request.getSession().getServletContext().getRealPath("tcc/reports/upload/")+name;
InputStream bis = new BufferedInputStream(new FileInputStream(new File(fileName)));
name = URLEncoder.encode(name,"UTF-8");
response.addHeader("Content-Disposition", "attachment;filename=" + name);
response.setContentType("multipart/form-data");
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
int len = 0;
while((len = bis.read()) != -1){
out.write(len);
out.flush();
}
out.close();
}
答
为空,可能是 var name = $("#lines").find("option:selected").text(); 这里取值时为空。
F 12 看看浏览器发送请求时的参数中 name 是否为空。
答
1、表单提交的时候name取值是否是为空的,这里检查一下
2、request IO读取是一次性的,读取之后流消失,不能读取第二次。检查一下在你获取参数前有没有对这个进行读取。
debug断点,看request请求参数里面是否有传递过来值,具体定位到是否是请求中丢失了参数。
3、可以将get请求换成post请求