Spring MVC中執行操作後, 刷新頁面會重複操作(已解決)

原來的代碼如下:

@RequestMapping("/content/update.do")
	public String update(Integer id, String title, String content,
						 @RequestParam MultipartFile image,
						 HttpServletRequest request,
						 HttpServletResponse response,
						 ModelMap model) throws Exception {

		myContentMng.deleteImageOnServer(id);

		CmsSite site = CmsUtils.getSite(request);
		String contextPath = request.getContextPath();
		String originalFileName = image.getOriginalFilename();
		String extension = FilenameUtils.getExtension(originalFileName).toLowerCase(Locale.ENGLISH);
		String fileUrl = fileRepository.storeByExt(site.getUploadPath(), extension, image);
		cmsUserMng.updateUploadSize(CmsUtils.getUserId(request), Integer.parseInt(String.valueOf(image.getSize() / 1024)));
		fileUrl = contextPath + fileUrl;
		MyContent myContent = myContentMng.getById(id);
		myContent.setTitle(title);
		myContent.setContent(content);
		myContent.setImgPath(fileUrl);
		myContentMng.update(myContent);
		model.addAttribute("myContents", myContentMng.listAll());
		return "content/get_all_my_content";
	}

該方法執行的是一個內容更新的操作,返回content/get_all_my_content.html頁面,刷新一下,會進行重複的內容更新操作,從而變成了bug。在方法體內完成內容更新操作後, 進行重定向即可。這樣,再刷新頁面就不會發生重複更新內容的操作。

@RequestMapping("/content/update.do")
	public void update(Integer id, String title, String content,
						 @RequestParam MultipartFile image,
						 HttpServletRequest request,
						 HttpServletResponse response,
						 ModelMap model) throws Exception {

		myContentMng.deleteImageOnServer(id);

		CmsSite site = CmsUtils.getSite(request);
		String contextPath = request.getContextPath();
		String originalFileName = image.getOriginalFilename();
		String extension = FilenameUtils.getExtension(originalFileName).toLowerCase(Locale.ENGLISH);
		String fileUrl = fileRepository.storeByExt(site.getUploadPath(), extension, image);
		cmsUserMng.updateUploadSize(CmsUtils.getUserId(request), Integer.parseInt(String.valueOf(image.getSize() / 1024)));
		fileUrl = contextPath + fileUrl;
		MyContent myContent = myContentMng.getById(id);
		myContent.setTitle(title);
		myContent.setContent(content);
		myContent.setImgPath(fileUrl);
		System.out.println(myContent);
		myContentMng.update(myContent);
		model.addAttribute("myContents", myContentMng.listAll());
		response.sendRedirect("listAll.do");
	}

(注: 方法存在bug, 不可照搬照用, 這裏只用來藉以說明問題)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章