На странице расположен обычный слайдер (bootstrap) с функциями редактирования и отправки файлов через ajax.
Нажимая на кнопку "Ок!" вызывается прозрачный слой
(backdrop) перекрывающий весь контент и отображается надпись "loading...". В это время файлы сохраняются и всё нормально работает. Однако, если убрать прозрачный слой и пользователь будет тыкать "Ок!", получается не хорошая ситуация: Одинаковые файлы могут записаться несколько раз, если по первому клику процесс сохранения не завершён.
Вопрос: Как приостановить получение запросов от пользователя до завершения операции?
@PostMapping("/slider")
public @ResponseBody int saveImages (HttpServletRequest req,
@RequestParam("image") List<MultipartFile> images,
Principal principal) throws IOException{
if(principal==null)
return 406; // Not Acceptable
if(images!=null && !images.isEmpty()) {
String path = service.getPathByPrincipal(principal);
boolean r1 = req.getParameter("r-1")==null? false : true;
boolean r2 = req.getParameter("r-2")==null? false : true;
boolean r3 = req.getParameter("r-3")==null? false : true;
boolean r4 = req.getParameter("r-4")==null? false : true;
boolean [] remove = {r1,r2,r3,r4};
if (r1 && r2 && r3 && r4)
TOOLS.removeSlide(path, -1); // удалить все
else
for (byte x=0; x<4; x++)
if (remove[x])
TOOLS.removeSlide(path, x+1); // удалить 1 по номеру
String imgName, absolutePath;
for(byte i=0; i<images.size();i++) {
imgName = images.get(i).getOriginalFilename().toLowerCase();
imgName = setCorrectName(imgName, i);
if (imgName!=null) {
if (remove[i]==false)
TOOLS.removeSlide(path, i+1); // удалить 1 по номеру
absolutePath = TOOLS.createUMediaPackage(path);
Path fullPath = Paths.get(absolutePath, imgName);
InputStream in = images.get(i).getInputStream();
BufferedImage image = ImageIO.read(in);
absolutePath = fullPath.toString();
TOOLS.writeOptimizedImage(absolutePath, image);
in.close();
}
}
}
else
return 412; // Bad request
return 200;
r1, r2, r3 и r4 - это скрытые чекбоксы на странице html, которые отвечают за удаление слайдов по нажатию на "корзину".