大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在我们前端进行表单提交的时候,有时候会出现这种情况:Failed to convert java.lang.String to java.util.List
创新互联建站服务项目包括南岳网站建设、南岳网站制作、南岳网页制作以及南岳网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,南岳网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到南岳省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
等等。
例如:
我后台定义一个对象:
examPaper 包含 String userId,Float userScore, MultipartFile examFile 用户id ,试卷分数,试卷文件
对象外面 classPaper有: String classId String className ListexamPaper examPaperList
这个时候,后台接收为 ClassPaper
如果按照平常的 form-data 提交 则应按以下方式提交:
let fd = new FormData();
fd.append("classId ",classId );
fd.append("className ",className );
examPaperList.forEach((item,index) -{
fd.append("examPaperList["+index+"].userId",item.userId);
fd.append("examPaperList["+index+"].userScore",item.userScore);
fd.append("examPaperList["+index+"].examFile ",item.examFile );
});
以这种方式就可以实现 多附件 一一 对应提交。以避免对象转换错误问题。
我们只要用content创建一个ObjectURL并赋值给aLink即可解决文件类型的限制问题。
文件的自动下载也挺好办,自己构建一个UI点击事件,再自动触发下,就能实现自动下载啦。
现在来看看最终代码:
代码如下:
function downloadFile(fileName, content){
var aLink = document.createElement('a');
var blob = new Blob([content]);
var evt = document.createEvent("HTMLEvents");
evt.initEvent("click", false, false);//initEvent 不加后两个参数在FF下会报错, 感谢 Barret Lee 的反馈
aLink.download = fileName;
aLink.href = URL.createObjectURL(blob);
aLink.dispatchEvent(evt);
}
现在,只要一调用downloadFile,文件就自动下载了
js中获取form表单中的附件名称方法如下
1. 利用表单在文档中的索引或表单的name属性来引用表单
1 document.forms[i] // 得到页面中的第i个表单 2 document.forms[formName] // 得到页面中相应name。