@RequestBody MultipartFile[] submissions
должно быть
@RequestParam("file") MultipartFile[] submissions
Файлы не являются телом запроса, они являются его частью и нет встроенного HttpMessageConverter
, который может преобразовать запрос в массив MultiPartFile
.
Вы также можете заменить HttpServletRequest
на MultipartHttpServletRequest
, что дает вам доступ к заголовкам отдельных частей.
Символ
blockquote>=
выделяет значение арифметического выражения справа от переменной слеваОн присваивает результат. Распределение - это нечто иное, и важно помнить разницу позже (в частности, динамическое распределение будет очень запутанным, если вы сопоставите его с назначением).
Но если у меня есть такое выражение, как
blockquote>x += y % 3
, значит ли этоx = (x + y) % 3
илиx = x + (y % 3)
?Отчасти из-за наличия соединения
+=
,-=
и т. Д. Операторы в том, что вы не не расширяете выражение, как это, избегая неоднозначности, создаваемой вашей перезаписью.x += y % 3
можно читать как
tmp = y % 3; // evaluate right hand side x += tmp; // assign to left hand side
(вы можете расширить
x += tmp
доx = x + tmp
, если действительно хотите, послеtmp
было оценено) . [+1122]Все правила описаны здесь здесь в любом случае, и в любом случае вы можете просто протестировать некоторый код для проверки: https://ideone.com/81tvjH [ 1112] [+1123]
Здесь есть путаница, потому что вы думаете, что x += 1;
всегда x = x + 1
. Это верно для целых чисел, двойных чисел ... но, как правило, НЕ относится к другим объектам. Многие реализации не создают временный объект. Или мог сделать что-то очень злое.
Итак, это вызов operator+=
, который принимает в качестве аргумента результат правой части присваивания.
Так что для целых чисел, это x = x + (y % 3)
.