У меня есть JSP-файл, который использует spring-form и spring mvc на бэкэнде.У меня есть 3 метода: 1. загрузить, 2. сохранить и 3. отменить.Форма имеет атрибут модели, установленный на некоторую форму (Java Bean), и все поля принадлежат форме, кроме типа файла.
Загрузка происходит правильно со следующим URL: https://localhost:8443/xyz/confgurePage.sp?method=load&csrfHandlingToken=9d123fc94968498db82fcc60a10e8637
Сопоставление запросов методов загрузки в серверной части выглядит следующим образом:
@ GetMapping (value = "/ confgurePage", params = {"method = load"}) public ModelAndView load (@ModelAttribute ("Form")Форма формы) Выдает исключение {}.
. Это прекрасно работает без каких-либо исключений, и я вижу, что JSP отображается правильно.
Далее у меня есть аналогичный запрос для методов сохранения и отмены, за исключением этого confgurePage.sp - это savePage.sp / cancelSave.sp для методов сохранения и отмены соответственно.
Теперь я изначально позволил методу сохранения быть таким же, как метод загрузки в бэкэнде, за исключением того, что это PostMapping - это привело к нулевому указателюисключение, где бы ни использовался файл (потому что у меня не было файла как части параметра запроса, есть также одно поле файла в форме bean-компонента, и я подумал, что это как-то отобразится: /).
Поэтому я изменил сопоставление моего запроса следующим образом:
@ PostMapping (value = "/ confgurePage", params = {"method = save", "csrfHandlingToken = *"}) public ModelAndView save(@ModelAttribute ("Form") Formform, @ RequestParam ("File") CommonsMultipartFile File) генерирует исключение {}
Также для метода загрузки я не включил токен csrf в параметры запроса, но он все еще работает нормальноно это не относится к методам сохранения и отмены.
Теперь с приведенным выше отображением запроса и URI запроса я получаю ошибку, как показано ниже:
HTTP Status 400 - Условия параметра "method =save, csrfHandlingToken = «ИЛИ» метод = отменить, csrfHandlingToken = «не выполнено для фактических параметров запроса: csrfHandlingToken = {140882ddd27540a8bf445e2ed1bded34, 140882ddd27540a8ed1}}, method = {cancel}
Также у меня настроена защита пружины, настроен фильтр детали Muiltp после фильтра безопасности пружины и токена csrf в запросе.
Любые указатели / помощь будут полезны