后台报错信息
ERROR org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/owep].[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [/owep] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException: null
at com.kclm.owep.web.controller.ClazzHomeworkController.save(ClazzHomeworkController.java:48) ~[classes/:?]
页面显示
var testdataBsSuggest2 = $("#clazz_add").bsSuggest({
url:"/owep/clazz/selectAllClass",
idField:"id",
keyField:"className",
effectiveFields: ["className"]
}).on('onSetSelectValue',function (e,keyword) {
$("#clazz_add_id").val(keyword.id);
$("#course_add").bsSuggest("destroy");
$("#course_add").bsSuggest({
url: "/owep/clazz/findCourseByClass?classId=" + keyword.id,
idField: "id",
keyField: "courseName",
effectiveFields: ["courseName"],
}).on('onSetSelectValue',function (e,keyword) {
$("#course_add_id").val(keyword.id);
$("#chapter_add").bsSuggest("destroy");
$("#chapter_add").bsSuggest({
url:"/owep/clazz/selectChapterByCourseId?courseId=" + keyword.id,
idField: "id",
keyField: "chapterName",
effectiveFields: ["chapterName"],
}).on('onSetSelectValue',function (e,keyword) {
$("#chapter_add_id").val(keyword.id);
$("#section_add").bsSuggest("destroy");
$("#section_add").bsSuggest({
url:"/owep/clazz/selectSectionByChapterId?chapterId=" + keyword.id,
idField: "id",
keyField: "sectionName",
effectiveFields: ["sectionName"],
}).on('onSetSelectValue',function (e,keyword) {
$("#section_add_id").val(keyword.id);
})
})
})
});
$('#add_sure').click(function () {
var form = document.forms["addHomeworkForm"];
var formData = new FormData(form);
$.ajax({
url:"/owep/clazz/saveHomework",
method:"POST",
async:true,
data:formData, //综合表单,使用formData来封装,不能用Serializable,否则无法提交
dataType:"text", //期望服务端发送给客户端的数据类型。不能写成application/json
contentType:false, //必需使用false,这样才能使用form表单采用multipart/form-data传输
processData:false,
success:function (data) {
//成功的回调
alert(data);
window.location.reload();
},
error:function (jqXHR) {
alert("添加失败");
}
});
});
@RequestMapping(value = "saveHomework",method = RequestMethod.POST,produces = "application/json")
@ResponseBody
public String save(Homework homework, Integer clazzId, Integer courseId, Integer chapterId, Integer sectionId, MultipartFile workFile){
//1.完成文件的上传
final String originalFilename = workFile.getOriginalFilename();
if (originalFilename != null && !originalFilename.equals("")){
//生成一个新的文件名
String fileName = UUID.randomUUID().toString();
//获取原来文件的扩展名
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
fileName += suffix;
//IO流操作
try {
workFile.transferTo(new File(FILE_UPLOAD_DIR + File.separatorChar + fileName));
System.out.println("上传成功,文件名为" + fileName);
} catch (IOException e) {
e.printStackTrace();
//...
}
homework.setWorkFileName(fileName);
}
Clazz clazz = new Clazz();
clazz.setId(clazzId);
Course course = new Course();
course.setId(courseId);
Chapter chapter = new Chapter();
chapter.setId(chapterId);
Section section = new Section();
section.setId(sectionId);
homework.setClazz(clazz);
homework.setCourse(course);
homework.setChapter(chapter);
homework.setSection(section);
if (this.homeworkService.save(homework) > 0){
return "添加成功";
}else {
return "添加失败";
}
}
后端好像显示这块的上传文件出错,找半天找不到
【相关推荐】
因为用VUE写的,所以搞了个函数挂载。
chatListDown(pos, initCount){
// 滚动聊天列表到底部
const _this = this;
var scrollTimer = null
let dom = document.getElementById('chat-list')
if (!dom) {
return
}
let maxCount = 5
initCount = initCount || 1
if (typeof pos !== 'number') {
pos = Math.max(dom.scrollHeight - dom.clientHeight, 888888)
}
dom.scrollTop = pos
if ((dom.scrollTop < pos) && (initCount < maxCount)) {
clearTimeout(scrollTimer)
scrollTimer = setTimeout(() => {
initCount++
_this.scrollChatListDown(pos, initCount)
}, 200)
}
}
挂载完打开页面就是聊天界面的效果了。